当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 浏览器对Cookie的限制

Javascript
javascript下拉框不被选中大类的区别方法
firefox浏览器下javascript 拖动层效果与原理分析代码
javascript 常用关键字列表集合
[原创]后缀就扩展名为js的文件是什么文件
初学JS的的小例子 javascript replace高亮替换
项目实践之javascript技巧
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
javascript数组使用调用方法汇总
JS的递增/递减运算符和带操作的赋值运算符的等价式
JavaScript开发时的五个注意事项
js中将多个语句写成一个语句的两种方法小结
javascript while语句和do while语句的区别分析
带参数的function 的自运行效果代码
看了就知道什么是JSON
js模拟实现Array的sort方法
JavaScript创建命名空间(namespace)的最简实现
文本链接逐个出现的js脚本
我见过最全的个人js加解密功能页面
CLASS_CONFUSION JS混淆 全源码
javascript轻松控制表格列样式的脚本代码

Javascript 中的 浏览器对Cookie的限制


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 356 ::
收藏到网摘: n/a

原文地址:Browser cookie restrictions

我一直在为我接下来的一本书做一些关于cookie的研究,在这个过程中我碰到了一些关于浏览器处理cookie的有意思的事情。我从寻找浏览器允许每个域保存的cookie个数开始。这个结果很有趣:

  • 微软表示,Internet Explorer 8增加了每个域可以保存的cookie个数至50个,不过我发现IE7也允许每个域保存50个cookie。当然,这可能是因为一个系统补丁增加的,而不是这个浏览器版本一开始就是这样,但是仍然超过了通常认为是20个的限制。
  • Firefox允许每个域保存50个cookie。
  • Opera允许每个域保存50个cookie。
  • Safari/WebKit是这其中最有趣的,因为它似乎没有明显的限制,一直到Safari 3.1。我测试了一下设置10,000个cookie,结果它们全部设置成功而且还随着Cookie头部一起发送了。不过问题是,头部的大小超过了限制,导致服务器不能处理,从而发生了错误。

因此,我们以前认为的浏览器限制每个域的cookie数目为20的观点不再正确。另一个有趣的不一致现象是:当设置了太多cookie时,浏览器有什么反应。出来Safari的异常之外,其它的都设置了上限个数的cookie,这里有两种方式:

  • 当cookie数量达到限制以后,最近最少使用算法(LRU)自动踢除最老的cookie,以便可以给最新的cookie腾出空间。Internet Explorer和Opera使用这个方式。
  • Firefox则有些奇怪:它似乎是随机决定保存cookie,尽管最后一个cookie总是会保存。似乎看不出来它遵循了什么规则。怎么办?(The takeaway? )在Firefox,中,不要从超过cookie的限制。

不同的浏览器之间,cookie的总大小也不尽相同。这一点也比较有一点难以理解,不过这里是我的一些测试结果:

  • Firefox和Safari允许cookie最长为4097个字符,即cookie的名(name)和值(value)总共可以长达4096个字符,还有一个等号(=)。
  • Opera则允许cookie最长为4096个字符,包括名(name)、值(value)和等号(=)。
  • Internet Explorer允许cookie最长为4095个字符,包括名(name)、值(value)和等号(=)。

这里要注意的是,这里的测试都是使用的单字节字符;双字节字符长度将会自然地记为2。在所有的浏览器中,只要长度超过了限制的cookie都将被忽略,并且永远不会被设置。

在做完这些测试以后,我得出的结论是传统的对于cookie的限制(大多是从原始的cookie规范中得来的)的理解不再正确。我们在使用cookie时应该非常谨慎,并始终以最低限度使用。