`
悟小元
  • 浏览: 8124 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Inside HTTP —— Cookie

    博客分类:
  • http
 
阅读更多

注释:资料很多来自互联网。


一、浏览器允许每个域名所包含的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#编程从入门到精通

    《Inside C#——C#编程从入门到精通》是一本专为初学者和有经验的开发者设计的C#编程指南,旨在帮助读者深入理解和熟练掌握C#语言的核心概念和技术。这本书详细介绍了C#的各个方面,从基础语法到高级特性,为读者...

    Inside C#——C#编程从入门到精通_0.rar

    《Inside C#——C#编程从入门到精通》是一本旨在帮助初学者和有经验的开发者深入了解C#编程语言的指南。C#是由微软开发的一种面向对象的编程语言,广泛应用于Windows应用程序、游戏开发、Web服务以及.NET框架下的...

    Inside Windows Debugging.pdf

    本书《Inside Windows Debugging》由Tarik Soulami撰写,得到了微软公司的授权,由O’Reilly Media, Inc.出版。该书结合最佳实践和常见的调试与编程技巧,很多技巧在其他书籍中尚未被记录下来。在本书的整个阅读过程...

    j2me Inside J2VM——源代碼

    《J2ME Inside J2VM——源代码》是关于Java Micro Edition(J2ME)在Java Virtual Machine(J2VM)内部工作原理的深入解析,它涵盖了J2ME的源代码层面,帮助开发者理解J2ME应用程序如何在有限资源的设备上运行。...

    Inside VCL(深入核心——VCL架构剖析)

    Inside VCL,看看VCL架构,剖析VCL架构,深入核心地剖析。

    藏经阁-AMAP INSIDE 智能定位带来的时代新机会——互联网世界底图.pdf

    藏经阁-AMAP INSIDE 智能定位带来的时代新机会——互联网世界底图 随着移动互联网的飞速发展,智能定位技术正在改变人们的生活方式。AMAP INSIDE 智能定位系统,以其强大的地图数据生产能力和精准的位置服务,正在...

    《Inside VCL(深入核心——VCL架构剖析)》配书源码

    《Inside VCL(深入核心——VCL架构剖析)》是一本深入探讨VCL(Visual Component Library)架构的专业书籍,由知名台湾程序员李维先生撰写。这本书籍旨在帮助读者理解VCL的核心机制,从而更好地利用这一强大的组件库...

    数字互联网电视——“Linux inside”.pdf

    标题中的“数字互联网电视——“Linux inside””指的是在电视技术中嵌入Linux操作系统,以实现互联网功能的新型电视。这种电视集成了传统电视的观看功能和计算机的网络应用,开启了电视产业的一个新阶段。 描述中...

    深入核心——VCL架构剖析.part2

    Inside VCL(深入核心——VCL架构剖析) (2008 年度畅销榜NO.22 ) &lt;br&gt;原书名: Inside VCL(深入核心——VCL架构剖析) 作者: 李维 著 &lt;br&gt; ☆领略优秀Framework之大局观! 追寻软件架构大师...

    进阶课程㉕丨Apollo规划技术详解——Optimization Inside Motion Planning.pdf

    Apollo 规划技术详解 ——Optimization Inside Motion Planning.pdf 本文主要讲解了自动驾驶软件中运动规划技术的核心概念和方法,包括动态规划、 二次规划、启发式搜索方法等。 动态规划是一种优化方法,将问题从...

    CLRInsideOut.zip

    《深入理解CLR Inside Out》是针对.NET Framework中的Common Language Runtime(CLR)的工具,它能够帮助开发者特别是熟悉C/C++的程序员将C/C++结构体转换为C#结构体,以便在.NET环境中进行编程。这个工具对于那些...

    Inside游戏效果文档

    首先,文档提到了“fog”——雾效是游戏中创造艺术风格的一个中心元素。在《Inside》中,许多初始场景仅仅是雾和轮廓的简单结合,这说明了雾效在游戏视觉表现中的主导作用。雾效的使用不仅仅是为了增加美感,更多是...

    ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.002

    Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...

    ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.006

    Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...

    036_《Inside 深入核心VCL架构剖析》(1/5)

    Delphi 教程 系列书籍 (036) 《Inside 深入核心VCL架构剖析》 网友(邦)整理 EMail: shuaihj@163.com 【Delphi系列书籍下载】(辛苦整理,大家珍惜!!!) ...

    《COM技术内幕——微软组件对象模型(Inside COM)》一书部分源码 for VS 2010

    由 Dale Rogerson 撰写的《COM技术内幕——微软组件对象模型》(Inside COM)一书附带的源码适合在Visual C++ 6.0下编译,同样的源码拿到 Visual Studio 2010 下面进行编译,会报告很多错误。因此本人对源码中的错误...

    李维Inside VCL附书源码

    《Inside VCL》是李维先生撰写的一本深入解析VCL(Visual Component Library)架构的专业书籍,这本书对于理解和掌握Delphi编程语言的核心组件库具有极高的价值。VCL是Delphi开发环境中的一部分,它为开发者提供了...

    ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.004

    Allegro自带的ODB++inside工具下载,ODB++inside插件可以将Allegro的.brd文件转化为仿真工具Hyperlynx使用的文件。共6个文件,需要分别下载。 ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.001 ODB_...

    ODB_Inside_Cadence_Allegro_111_Windows_64_SA_Setup.zip.003

    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.pdf_inside_C++_

    《Inside the C++ Object Model》是一本由Stanley Lippman编著的深入解析C++对象模型的专业书籍。这本书详细探讨了C++编程语言在内存、类型系统、对象表示、继承、虚函数、模板等核心概念下的底层实现原理。通过阅读...

Global site tag (gtag.js) - Google Analytics