浏览器 cookie 详解 -- 转载自网易博客gkecenter

Cookies

这个由Netscape的前雇员Lou Montulli19933月的发明的东西,至今仍然被广泛的应用在各网站上,我们用它来保存登录状态,用它来保存浏览过的商品,用它来保存购物车物品,等等。 

目前cookie存在了以下几种的规范: 

Netscape cookie草案:是最早的cookie规范,也是RFC2109的基础。尽管如此,它与RFC2109还是有较大的差别,所以跟一些服务器有兼容上的问题。 

RFC2109:基于是w3c发布的第一个官方cookie规范。理论上,所有的服务器在处理版本1cookie时,都要遵循此规范。遗憾的是,由于这个规范过于严格,很多服务器并没有正确的实现这个标准或者还是在使用Netscapecookie草案。 

RFC2965cookie规范的第二个版本,指出了RFC2109cookie版本1的不足。RFC2965的目标是最终取代RFC2109

下面我们来看看浏览器,web服务器跟cookie之间的交互是怎样的: 

当我们用浏览器访问一个网站的时候,就会想服务器发起一个请求。 根据请求的urlcookie本身的属性,筛选出需要发送给服务器的cookie(当然也有可能没有cookie)。 如果有多个cookie的话,还会决定发送的顺序。 把这些需要发送的cookie包含在HTTP的包头里发送给服务器。 然后到了应答阶段,服务器会发回一个应答包头,包头里包含了cookie信息。 浏览器解析这个cookie,包括名称,值,路径等元素。 最后,把cookie保存在本地。至于哪些cookie会被发送到服务器端,是有一套规则的,例如域名选择、路径选择和Max-Age选择,这些都可以在RFC2109里找到,这里就不展开了。 

从上面可以看到,每次的http请求,cookie都会包含在包头里发送给服务器,这也是被开发者广为诟病的一个cookie缺点,因为这意味这每个请求都无形中增加了流量,特别是像请求图片这些资源的时候,附带的cookie信息是完全没有必要的。所以现在很多网站图片等静态资源都会用独立的域名运作,这样就可以单独对这些域名进行cookie设置。除此以外,cookie还有以下影响比较大的缺点: 

安全性问题。cookiehttp请求中是明文传递的,除非使用SSL通道,不然是不宜在cookie里放置重要信息。 

大小问题。每个cookie的大小不能超过4K。每个Domaincookie个数根据浏览器不同也不同。

关于Cookies的一些限制问题,可以参考下Nicholas的一篇文章:浏览器允许的每个域名下的Cookie数: 

IE7IE8限制为50个。 

Firefox限制为50个。 

Opera限制30 

Safari/WebKit没有限制,但是如果header的大小超过服务器能处理的情况下,则会出现错误。

那如果Cookie数设置超过限制的时候,各浏览器又是如何处理呢: 

Safari由于没有Cookie数的限制,所以不作讨论。 IEOpera下,将会采用LRUThe Least Recently Used)方法,自动踢掉最老的cookie以腾出空间给新的cookieIEOpera使用这方法。 Firefox就比较独特:它貌似会随机决定哪些cookie将会保留,尽管最后设置的cookie会被保留。所以在Firefox里不要超过cookie数的限制。

cookie的总大小在各浏览器中也是不同的: 

FirefoxSafari允许cookie多达4097个字节,其中4096个字节是名字和值,1个字节是=号。 Opera允许cookie多达4096个字节,这些字节包含名字、值和=号。 IE允许4095个字节,这些字节包含名字、值和=号。注意这里用的字节,也就是,如果是多字节字符,自然就会占用两个字节。在所有浏览器里,如果设置的cookie大小超过限制,那么它就会被忽略或者不被设置。 

从上面,我们可以看到,Cookie确实存在一些不足,但是它的一些缺点也正是它的优点,例如每个请求都会被放到包头里发送给服务器,正是这个特性我们才能很方便的传输sessionidCookie的出现可谓大大推动了网页的发展,而且在未来很长的一段时间里,Cookie还会继续发挥它的作用。但是也正是由于Cookie存在种种的不足,才会有新的本地存储技术出现的需求。

设置IECOOKIES的收藏目录: 

1。打开注册表编辑器。打开注册表的方法为:运行注册表编辑器(开始->运行->regedit 
2。打开HKEY_CRURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVESION\EXPLORER \USER SHELL FOLDERS 子键,双击右侧窗口中的COOKIES,将数值设置为收藏夹的完整路径,如:D\COOKIES  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值