Cookie详解_cookies subpage in page info

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

value部分,通常是一个name=value格式的字符串。事实上有很多浏览器用自己的格式,有细微的不同。

当一个cookie存在,并且可选条件允许的话,该cookie的值会在接下来的每个请求中被发送至服务器。

cookie的值被存储在名为Cookie的HTTP消息头中,并且只包含了cookie的值,其它的选项全部被去除。

可选项只是存在于浏览器端,并不需要发给服务端。

例如: Cookie : value

如果在指定的请求中有多个cookies,那么它们会被分号和空格分开,例如:

Cookie:value1 ; value2 ; name1=value1

有效期选项(The expires  option)

指定了cookie过期的时间,过期后可能会被浏览器删掉。

格式为Wdy,DD-Mon–YYYY HH:MM:SS GMT,例如:

Set-Cookie:name=Nicholas;expires=Sat, 02 May 2009 23:38:25 GMT

在没有expires选项时,cookie的寿命仅限于单一的会话中。浏览器的关闭意味这一次会话的结束,所以会话cookie只存在于浏览器保持打开的状态之下。

domain选项(The domain option)

指示cookie将要发送到哪个域或那些域中。默认情况下,domain会被设置为创建该cookie的页面所在的域名。

domain选项被用来扩展cookie值所要发送域的数量。例如:

Set-Cookie:name=Nicholas;domain=www.baidu.com

很多时候大网站存在二级域名,例如fanyi.baidu.com。cookies可能只发给对应的二级域名。

Path选项(The path option)

在请求相匹配的路径的时候,才会发送cookie

例如:

Set-Cookie:name=Nicholas;path=/blog

在这个例子中,path选项值会与/blog,/blogrool等等相匹配;任何以/blog开头的选项都是合法的。

secure选项(The secure option)

该选项只是一个标记并且没有其它的值。只有当请求是通过SSL和HTTPS创建时,才会发送。

这种cookie的内容意指具有很高的价值并且可能潜在的被破解以纯文本形式传输。例如

Set-Cookie:name=Nicholas;secure

现实中,机密且敏感的信息绝不应该在cookies中存储或传输,因为cookies的整个机制都是原本不安全的。

默认情况下,在HTTPS链接上传输的cookies都会被自动添加上secure选项。

cookie的维护和生命周期(cookie maintenance and lifecycle)

任意数量的选项都可以在单一的cookie中指定,并且这些选项可以以任何顺序存在,例如

Set-Cookie:name=Nicholas; domain=nczonline.net; path=/blog

这个cooke有四个标识符:cookie的name,domain,path,secure标记。

要想在将来改变这个cookie的值,需要发送另一个具有相同cookie name,domain,path的Set-Cookie消息头。

例如:

Set-Cooke:name=Greg; domain=nczonline.net; path=/blog

这将以一个新的值来覆盖原来cookie的值。

然而,仅仅只是改变这些选项的某一个也会创建一个完全不同的cookie,

例如:

Set-Cookie:name=Nicholas; domain=nczonline.net; path=/

在返回这个消息头后,会存在两个同时拥有“name”的不同的cookie。

如果你访问在www.nczonline.NET/blog下的一个页面,以下的消息头将被包含进来:

Cookie:name=Greg;name=Nicholas

在这个消息头中存在了两个名为“name”的cookie,path值越详细则cookie越靠前。domain-path越详细则cookie字符串越靠前。假设我在ww.nczonline.Net/blog下并且发送了另一个cookie,其设置如下:

Set-Cookie:name=Mike

那么返回的消息头现在则变为:

Cookie:name=Mike;name=Greg;name=Nicholas

由于包含“Mike”的cookie使用了域名(www.nczonline.net)作为其domain值并且以全路径(/blog)作为其path值,则它较其它两个cookie更加详细。

使用失效日期(using expiration dates)

当cookie创建时包含了失效日期,这个失效日期则关联了以name-domain-path-secure为标识的cookie。

要改变一个cookie的失效日期,必须指定同样的组合。当改变一个cookie的值时,你不必每次都设置失效日期,因为它不是cookie标识信息的组成部分。

例如:

Set-Cookie:name=Mike;expires=Sat,03 May 2025 17:44:22 GMT

现在已经设置了cookie的失效日期,所以下次我想要改变cookie的值时,我只需要使用它的名字:

Set-Cookie:name=Matt

在cookie上的失效日期并没有改变,因为cookie的标识符是相同的。实际上,只有你手工的改变cookie的失效日期,否则其失效日期不会改变。这意味着在同一个会话中,一个会话cookie可以变成一个持久化cookie(一个可以在多个会话中存在的),反之则不可。为了要将一个持久化cookie变为一个会话cookie,你必须删除这个持久化cookie,这只要设置它的失效日期为过去某个时间之后再创建一个同名的会话cookie就可以实现。

需要记得的是失效日期是以浏览器运行的电脑上的系统时间为基准进行核实的。没有任何办法来来验证这个系统时间是否和服务器的时间同步,所以当服务器时间和浏览器所处系统时间存在差异时这样的设置会出现错误。

cookie自动删除(automatic cookie removal)

cookie会被浏览器自动删除,通常存在以下几种原因:

会话cooke(Session cookie)在会话结束时(浏览器关闭)会被删除

持久化cookie(Persistent cookie)在到达失效日期时会被删除

如果浏览器中的cookie限制到达,那么cookies会被删除以为新建cookies创建空间。

对于任何这些自动删除来说,Cookie管理显得十分重要,因为这些删除都是无意识的。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值