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

Javascript
javascript 图片放大效果函数
javascript 随机抽奖程序代码
JavaScript 读取图片实例代码
JQuery toggle使用分析
jQuery html()等方法介绍
jquery中的$(document).ready()与window.onload的区别
JS获取dom 对象 ajax操作 读写cookie函数
ExtJS Window 最小化的一种方法
div移动 输入框不能输入的问题
js trim函数 去空格函数与正则集锦
js url传值中文乱码之解决之道
页面版文本框智能提示JS代码
ExtJS的FieldSet的column列布局
Jquery中增加参数与Json转换代码
ExtJS Grid使用SimpleStore、多选框的方法
javascript实现拖拽并替换网页块元素
javascript 设置文本框中焦点的位置
面向对象的编程思想在javascript中的运用上部
javascript call方法使用说明
javascript instanceof 与typeof使用说明

Javascript 中的 浏览器对Cookie的限制


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