注释:资料很多来自互联网。
一、浏览器允许每个域名所包含的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#编程从入门到精通》是一本专为初学者和有经验的开发者设计的C#编程指南,旨在帮助读者深入理解和熟练掌握C#语言的核心概念和技术。这本书详细介绍了C#的各个方面,从基础语法到高级特性,为读者...
《Inside C#——C#编程从入门到精通》是一本旨在帮助初学者和有经验的开发者深入了解C#编程语言的指南。C#是由微软开发的一种面向对象的编程语言,广泛应用于Windows应用程序、游戏开发、Web服务以及.NET框架下的...
本书《Inside Windows Debugging》由Tarik Soulami撰写,得到了微软公司的授权,由O’Reilly Media, Inc.出版。该书结合最佳实践和常见的调试与编程技巧,很多技巧在其他书籍中尚未被记录下来。在本书的整个阅读过程...
《J2ME Inside J2VM——源代码》是关于Java Micro Edition(J2ME)在Java Virtual Machine(J2VM)内部工作原理的深入解析,它涵盖了J2ME的源代码层面,帮助开发者理解J2ME应用程序如何在有限资源的设备上运行。...
Inside VCL,看看VCL架构,剖析VCL架构,深入核心地剖析。
藏经阁-AMAP INSIDE 智能定位带来的时代新机会——互联网世界底图 随着移动互联网的飞速发展,智能定位技术正在改变人们的生活方式。AMAP INSIDE 智能定位系统,以其强大的地图数据生产能力和精准的位置服务,正在...
《Inside VCL(深入核心——VCL架构剖析)》是一本深入探讨VCL(Visual Component Library)架构的专业书籍,由知名台湾程序员李维先生撰写。这本书籍旨在帮助读者理解VCL的核心机制,从而更好地利用这一强大的组件库...
标题中的“数字互联网电视——“Linux inside””指的是在电视技术中嵌入Linux操作系统,以实现互联网功能的新型电视。这种电视集成了传统电视的观看功能和计算机的网络应用,开启了电视产业的一个新阶段。 描述中...
Inside VCL(深入核心——VCL架构剖析) (2008 年度畅销榜NO.22 ) <br>原书名: Inside VCL(深入核心——VCL架构剖析) 作者: 李维 著 <br> ☆领略优秀Framework之大局观! 追寻软件架构大师...
Apollo 规划技术详解 ——Optimization Inside Motion Planning.pdf 本文主要讲解了自动驾驶软件中运动规划技术的核心概念和方法,包括动态规划、 二次规划、启发式搜索方法等。 动态规划是一种优化方法,将问题从...
《深入理解CLR Inside Out》是针对.NET Framework中的Common Language Runtime(CLR)的工具,它能够帮助开发者特别是熟悉C/C++的程序员将C/C++结构体转换为C#结构体,以便在.NET环境中进行编程。这个工具对于那些...
首先,文档提到了“fog”——雾效是游戏中创造艺术风格的一个中心元素。在《Inside》中,许多初始场景仅仅是雾和轮廓的简单结合,这说明了雾效在游戏视觉表现中的主导作用。雾效的使用不仅仅是为了增加美感,更多是...
Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...
Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...
Delphi 教程 系列书籍 (036) 《Inside 深入核心VCL架构剖析》 网友(邦)整理 EMail: shuaihj@163.com 【Delphi系列书籍下载】(辛苦整理,大家珍惜!!!) ...
由 Dale Rogerson 撰写的《COM技术内幕——微软组件对象模型》(Inside COM)一书附带的源码适合在Visual C++ 6.0下编译,同样的源码拿到 Visual Studio 2010 下面进行编译,会报告很多错误。因此本人对源码中的错误...
《Inside VCL》是李维先生撰写的一本深入解析VCL(Visual Component Library)架构的专业书籍,这本书对于理解和掌握Delphi编程语言的核心组件库具有极高的价值。VCL是Delphi开发环境中的一部分,它为开发者提供了...
Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...
Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...
《Inside the C++ Object Model》是一本由Stanley Lippman编著的深入解析C++对象模型的专业书籍。这本书详细探讨了C++编程语言在内存、类型系统、对象表示、继承、虚函数、模板等核心概念下的底层实现原理。通过阅读...