Posts Tagged ‘cookie’

10 08 2009

jQuery 操作Cookie 的函数

bigCat Posted in JavaScript - 0 Comment
jQuery.cookie = function(name, value, options) {\r\n    if (typeof value != 'undefined') {\r\n        options = options || {};\r\n        if (value === null) {\r\n            value = '';\r\n            options = $.extend({}, options);\r\n            options.expires = -1;\r\n        }\r\n        var expires = '';\r\n        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {\r\n            var date;\r\n            if (typeof options.expires == 'number') {\r\n                date = new Date();\r\n                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));\r\n            } else {\r\n                date = options.expires;\r\n            }\r\n            expires = '; expires=' + date.toUTCString();\r\n        }\r\n        var path = options.path ? '; path=' + (options.path) : '';\r\n        var domain = options.domain ? '; domain=' + (options.domain) : '';\r\n        var secure = options.secure ? '; secure' : '';\r\n        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');\r\n    } else {\r\n        var cookieValue = null;\r\n        if (document.cookie && document.cookie != '') {\r\n            var cookies = document.cookie.split(';');\r\n            for (var i = 0; i < cookies.length; i++) {\r\n                var cookie = jQuery.trim(cookies[i]);\r\n                if (cookie.substring(0, name.length + 1) == (name + '=')) {\r\n                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return cookieValue;\r\n    }\r\n};\r\n\r\n//调用\r\n\r\n
$(document).ready(function() {\r\n$('#wCookies').click(function(){\r\n  $.cookie('name', 'test',{expires: 7});				  \r\n});\r\n$('#rCookies').click(function(){\r\n  var test = $.cookie('name');\r\n  alert (test);\r\n});\r\n$('#dCookies').click(function(){\r\n	$.cookie('name', null);							  \r\n});\r\n});

\r\n

2 07 2009

浏览器 cookie 限制

bigCat Posted in NoteBook - 0 Comment

原文 http://www.planabc.net/2008/05/22/browser_cookie_restrictions/\r\n\r\n一、浏览器允许每个域名所包含的 cookie 数:\r\n

    \r\n
  1. Microsoft 指出 Internet Explorer 8 增加 cookie 限制为每个域名 50 个,但 IE7 似乎也允许每个域名 50 个 cookie(《Update to Internet Explorer’s Cookie Jar》)。
  2. \r\n

  3. Firefox 每个域名 cookie 限制为 50 个。
  4. \r\n

  5. Opera 每个域名 cookie 限制为 30 个。
  6. \r\n

  7. Safari/WebKit 貌似没有 cookie 限制。但是如果 cookie 很多,则会使 header 大小超过服务器的处理的限制,会导致错误发生。
  8. \r\n

\r\n注:“每个域名 cookie 限制为 20 个”将不再正确!\r\n\r\n二、当很多的 cookie 被设置,浏览器如何去响应。除 Safari(可以设置全部cookie,不管数量多少),有两个方法:\r\n

    \r\n
  1. 最少最近使用(least recently used (LRU))的方法:当 Cookie 已达到限额,自动踢除最老的 Cookie ,以使给最新的 Cookie 一些空间。 Internet Explorer 和 Opera 使用此方法。
  2. \r\n

  3. Firefox 很独特:虽然最后的设置的 Cookie 始终保留,但似乎随机决定哪些 cookie 被保留。似乎没有任何计划(建议:在 Firefox 中不要超过 Cookie 限制)。
  4. \r\n

\r\n三、不同浏览器间 cookie 总大小也不同:\r\n

    \r\n
  1. Firefox 和 Safari 允许 cookie 多达 4097 个字节, 包括名(name)、值(value)和等号。
  2. \r\n

  3. Opera 允许 cookie 多达 4096 个字节, 包括:名(name)、值(value)和等号。
  4. \r\n

  5. Internet Explorer 允许 cookie 多达 4095 个字节, 包括:名(name)、值(value)和等号。
  6. \r\n

\r\n注:多字节字符计算为两个字节。在所有浏览器中,任何 cookie 大小超过限制都被忽略,且永远不会被设置。\r\n\r\n节选自:《Browser cookie restrictions》

Host: (miao) | Word: Press | Code: HTML5