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

Javascript
javascript 面向对象的经典实例代码
javascript prototype原型操作笔记
JavaScript 常见对象类创建代码与优缺点分析
javascript 混合的构造函数和原型方式,动态原型方式
测试JavaScript字符串处理性能的代码
JQuery 表单中textarea字数限制实现代码
jQuery Selectors(选择器)的使用(六、属性篇)
IE浏览器打印的页眉页脚设置解决方法
javascript检测(控制 )上传文件大小
jquery 双色表格实现代码
JavaScript Cookie的读取和写入函数
JavaScript 利用Cookie记录用户登录信息
JavaScript Cookie显示用户上次访问的时间和次数
JavaScript Cookie 直接浏览网站分网址
javascript OFFICE控件测试代码
javascript setTimeout和setInterval 的区别
javascript弹出窗口 window.open使用方法以及参数说明分析篇
可以用来搜索当前页面内容的js代码
动态调整textarea中字体的大小代码
为指定元素增加样式的js代码

Javascript 中的 浏览器对Cookie的限制


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