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

Javascript
[HTML/CSS/Javascript]WWTJS
DynamicOptionList连动菜单代码
用meta实现的页面跳转代码
带缓冲的 收缩与展开内容效果
删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。
javascript入门·对象属性方法大总结
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
JavaScript 入门·JavaScript 具有全范围的运算符
用javascript实现模拟火焰
JavaScript加密解密7种方法总结分析
javascript一段创建层的代码
简洁的一个实现网页全屏代码
关于 byval 与 byref 的区别分析总结
表单填写时用回车代替TAB的实现方法
javascript currentTarget对象介绍
js文本中搜索关键词输入效果
javascript实现的左右选择框效果代码
JS网络游戏-(模拟城市webgame)提供的一些例子下载
javascript最短的拖动代码[兼容FF]
javascript实现的LI列表输出,隔行同色的代码

Javascript 中的 浏览器对Cookie的限制


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 333 ::
收藏到网摘: 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时应该非常谨慎,并始终以最低限度使用。