注释:资料很多来自互联网。
一、浏览器允许每个域名所包含的cookie数:
Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。
Firefox每个域名cookie限制为50个。
Opera每个域名cookie限制为30个。
Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
注:“每个域名cookie限制为20个”将不再正确!
二、当很多的cookie被设置,浏览器如何去响应。
除Safari(可以设置全部cookie,不管数量多少),有两个方法:
最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。Internet Explorer和Opera使用此方法。
Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。
三、不同浏览器间cookie总大小也不同:
Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。
补充:
a. Cookie设置:
http方式:以访问http://www.webryan.net/index.php为例
Step1.客户端发起http请求到Server
GET /index.php HTTP/1.1
Host: www.webryan.net
(这里是省去了User-Agent,Accept等字段)
Step2. 服务器返回http response,其中可以包含Cookie设置
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT
(content of page)
Step3. 后续访问webryan.net的相关页面
GET /spec.html HTTP/1.1
Host: www.webryan.net
Cookie: name=value; name2=value2
Accept: */*
需要修改cookie的值的话,只需要Set-Cookie: name=newvalue即可,浏览器会用新的值将旧的替换掉。
b. Cookie属性
除了name=value对以外,我们还可以设置Cookie其他属性以支持更丰富的Cookie需求,这些属性通常是浏览器用来判断如何对待cookie,何时删除、屏蔽或者如何发送name-value对给Server。也就是说无论我们设置了某个cookie的多少属性,这些Cookie属性是不会被浏览器发送回给Server的。
a) Domain and Path
作用:定义Cookie的生效作用域,只有当域名和路径同时满足的时候,浏览器才会将Cookie发送给Server。如果没有设置Domain和Path的话,他们会被默认为当前请求页面对应值。 举例如下:
提问下:第一个和第三个Cookie有啥不一样??
结论:浏览器优先匹配domain,而对于Path字段则是以匹配的方式进行判断。
对于
1.http://docs.foo.com/accounts/index.html
2.http://docs.foo.com/accountstest.html
1.会带上Cookie1,2,3; 2会带上1,2
b) Expires and Max-Age
作用:设置浏览器何时删除Cookie
Expires的规定格式是:“Wdy, DD-Mon-YYYY HH:MM:SS GMT”。
相对于Expires的精准的时间设置,在RFC 2965中规范提供了一个替代方案:Max-Age:seconds,来设置cookie在设置后多长秒后失效。
Set-Cookie: lu=Rg3vHJZnehYLjVg7qi3bZjzg; expires=Tue, 15-Jan-2013 21:47:38 GMT; path=/; domain=.foo.com; httponly
Set-Cookie: made_write_conn=1295214458; path=/; domain=.foo.com
Set-Cookie: reg_fb_gate=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.foo.com; httponly
第一个Cookie: 过期时间是2013年1月15日的精确时间;
第二个:没有设置过期时间,为Session cookie.
第三个:删除Cookie
C) Secure and HttpOnly
作用:设置Cookie的安全属性
特质:Secure和HttpOnly都是没有value字段的。
Secure字段告诉浏览器在https通道时,对Cookie进行安全加密,这样即时有黑客监听也无法获取cookie内容。
HttpOnly字段告诉浏览器,只有在HTTP协议下使用,对浏览器的脚本不可见,所以跨站脚本攻击时也不会被窃取。
Google和Facebook都在使用HttpOnly的Cookie。
其他:
JavaScript对Cookie的操控:
一般通过document.cookie对象来操控cookie
JSP对Cookie的操控:
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10);
response.addCookie(cookie);
%>
这个原理上是对HTTP头的设置。
分享到:
相关推荐
Inside C#——C#编程从入门到精通_0.rar,对于学习c#很有帮助!!!!
这本书不用多说了,看书吧
《Inside VCL(深入核心——VCL架构剖析)》是台湾首席程序员李维先生的最新大作,相信大家都如雷灌耳,这里是书本的全套源码,喜欢大家喜欢。
j2me Inside J2VM——源代碼Inside J2VM——源代碼
数字互联网电视——“Linux inside”.pdf
进阶课程㉕丨Apollo规划技术详解——Optimization Inside Motion Planning.pdf
Inside VCL,看看VCL架构,剖析VCL架构,深入核心地剖析。
藏经阁-AMAP INSIDE 智能定位带来的时代新机会——互联网世界底图.pdf
Inside VCL(深入核心——VCL架构剖析) (2008 年度畅销榜NO.22 ) <br>原书名: Inside VCL(深入核心——VCL架构剖析) 作者: 李维 著 <br> ☆领略优秀Framework之大局观! 追寻软件架构大师...
Delphi 教程 系列书籍 (036) 《Inside 深入核心VCL架构剖析》 网友(邦)整理 EMail: shuaihj@163.com 【Delphi系列书籍下载】(辛苦整理,大家珍惜!!!) ...
由 Dale Rogerson 撰写的《COM技术内幕——微软组件对象模型》(Inside COM)一书附带的源码适合在Visual C++ 6.0下编译,同样的源码拿到 Visual Studio 2010 下面进行编译,会报告很多错误。因此本人对源码中的错误...
Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...
Inside C++ Object Model/Inside C++ Object Model/Inside C++ Object Model/Inside C++ Object Model
Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...
Inside_NAND_Flash_Memories.pdf
inside ole 英文版,还是英文版看着舒服!inside ole 英文版,还是英文版看着舒服!inside ole 英文版,还是英文版看着舒服!inside ole 英文版,还是英文版看着舒服!inside ole 英文版,还是英文版看着舒服!...
如果由InsideSales支持人员或InsideSales管理员要求清除缓存和cookie,则此工具可以快速轻松地完成该任务! InsideSales.com并未正式支持此工具。 请仅使用后果自负。 尽管此工具应完全安全使用,但对于使用此工具...
Inside VCL(深入核心——VCL架构剖析) (2008 年度畅销榜NO.22 ) <br>原书名: Inside VCL(深入核心——VCL架构剖析) 作者: 李维 著 <br> ☆领略优秀Framework之大局观! 追寻软件架构大师...
Inside the C++ Object Model 中文版
Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...