软件技术IE cookie 的详细求解

米花 发表 于:8年前 浏览量:158
网站必须要和主流浏览器友好,才称得上一个好的网站。
firefox调试是很方便的,但ie不方便。
最近调试ie的cookie,用到一些知识点:

Cookies

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

目前cookie存在了以下几种的规范:
  • Netscape cookie草案:是最早的cookie规范,也是RFC2109的基础。尽管如此,它与RFC2109还是有较大的差别,所以跟一些服务器有兼容上的问题。
  • RFC2109:基于是w3c发布的第一个官方cookie规范。理论上,所有的服务器在处理版本1的cookie时,都要遵循此规范。遗憾的是,由于这个规范过于严格,很多服务器并没有正确的实现这个标准或者还是在使用Netscape的cookie草案。
  • RFC2965:cookie规范的第二个版本,指出了RFC2109里cookie版本1的不足。RFC2965的目标是最终取代RFC2109。
下面我们来看看浏览器,web服务器跟cookie之间的交互是怎样的:
  • 当我们用浏览器访问一个网站的时候,就会想服务器发起一个请求。
  • 根据请求的url和cookie本身的属性,筛选出需要发送给服务器的cookie(当然也有可能没有cookie)。
  • 如果有多个cookie的话,还会决定发送的顺序。
  • 把这些需要发送的cookie包含在HTTP的包头里发送给服务器。
  • 然后到了应答阶段,服务器会发回一个应答包头,包头里包含了cookie信息。
  • 浏览器解析这个cookie,包括名称,值,路径等元素。
  • 最后,把cookie保存在本地。
至于哪些cookie会被发送到服务器端,是有一套规则的,例如域名选择、路径选择和Max-Age选择,这些都可以在RFC2109里找到,这里就不展开了。

从上面可以看到,每次的http请求,cookie都会包含在包头里发送给服务器,这也是被开发者广为诟病的一个cookie缺点,因为这意味这每个请求 都无形中增加了流量,特别是像请求图片这些资源的时候,附带的cookie信息是完全没有必要的。所以现在很多网站图片等静态资源都会用独立的域名运作, 这样就可以单独对这些域名进行cookie设置。 除此以外,cookie还有以下影响比较大的缺点:
  • 安全性问题。cookie在http请求中是明文传递的,除非使用SSL通道,不然是不宜在cookie里放置重要信息。
  • 大小问题。每个cookie的大小不能超过4K。每个Domain下cookie个数根据浏览器不同也不同。
关于Cookies的一些限制问题,可以参考下Nicholas的一篇文章: 浏览器允许的每个域名下的Cookie数:
  • IE7跟IE8限制为50个。
  • Firefox限制为50个。
  • Opera限制30个
  • Safari/WebKit没有限制,但是如果header的大小超过服务器能处理的情况下,则会出现错误。
那如果Cookie数设置超过限制的时候,各浏览器又是如何处理呢:
  • Safari由于没有Cookie数的限制,所以不作讨论。
  • 在IE和Opera下,将会采用LRU(The Least Recently Used)方法,自动踢掉最老的cookie以腾出空间给新的cookie。IE和Opera使用这个方法。
  • Firefox就比较独特:它貌似会随机决定哪些cookie将会保留,尽管最后设置的cookie会被保留。所以在Firefox里不要超过cookie数的限制。
cookie的总大小在各浏览器中也是不同的:
  • Firefox和Safari允许cookie多达4097个字节,其中4096个字节是名字和值,1个字节是=号。
  • Opera允许cookie多达4096个字节,这些字节包含名字、值和=号。
  • IE允许4095个字节,这些字节包含名字、值和=号。
注意这里用的字节,也就是,如果是多字节字符,自然就会占用两个字节。在所有浏览器里,如果设置的cookie大小超过限制,那么它就会被忽略或者不被设置。

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

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

本文由 米花发表。转载请注明出处:https://www.mihua.net/list/0/2784.html

发表评论

您的昵称:

猜你喜欢

最近更新