Cookie的格式及组成

转自:http://blog.csdn.net/talking12391239/article/details/9665185

Cookie由变量名和值组成,类似JavaScript变量。其属性里既有标准的Cookie变量,也有用户自己创建的变量,属性中变量是用“变量=值”形式来保存。
  根据Netscape公司的规定,Cookie格式如下:

  Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

  NAME=VALUE:

  这是每一个Cookie均必须有的部分。NAME是该Cookie的名称,VALUE是该Cookie的值。在字符串“NAME=VALUE”中,不含分号、逗号和空格等字符。
  Expires=DATE:Expires变量是一个只写变量,它确定了Cookie有效终止日期。该属性值DATE必须以特定的格式来书写:星期几,DD-MM-YY HH:MM:SS GMT,GMT表示这是格林尼治时间。反之,不以这样的格式来书写,系统将无法识别。该变量可省,如果缺省时,则Cookie的属性值不会保存在用户的硬盘中,而仅仅保存在内存当中,Cookie文件将随着浏览器的关闭而自动消失。
  Domain=DOMAIN-NAME:Domain该变量是一个只写变量,它确定了哪些Internet域中的Web服务器可读取浏览器所存取的Cookie,即只有来自这个域的页面才可以使用Cookie中的信息。这项设置是可选的,如果缺省时,设置Cookie的属性值为该Web服务器的域名。
  Path=PATH:Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie。一般如果用户输入的URL中的路径部分从第一个字符开始包含Path属性所定义的字符串,浏览器就认为通过检查。如果Path属性的值为“/”,则Web服务器上所有的WWW资源均可读取该Cookie。同样该项设置是可选的,如果缺省时,则Path的属性值为Web服务器传给浏览器的资源的路径名。
  可以看出我们借助对Domain和Path两个变量的设置,即可有效地控制Cookie文件被访问的范围。
  Secure:在Cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为加密认证协议时,浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS。

Cookies以键值的方式记录会话跟踪的内容.服务器利用响应报头Set-Cookie来发送COOKIE信息.在RFC2109中定义的SET-COOKIE响应报头的格式为:
Set-Cookie: Name = Value; Comment = value; Domain = value; Max-Age = value; Path = Value;
Secure; Version = 1 * DIGIT;

Name是Cookie的名字,Value是它的值.Name=Value属性值对必须首先出现,在此之后的属性-值对可以以任何顺序出现. 在Servlet规范中,用于会话跟踪的cookie的名字必须是JSESSIONID,Comment属性是可选的,因为Cookie可能包含其它有关用户私有的信息.这个属性允许服务器说明这个Cookie的使用,用户可以检查这个消息,然话决定是否加入或继续会话.Domain属性也是可选的.它用来指定Cookie在哪一个域中有效.所指定的域必须以点号(.)来开始.Max-Age属性是可选的,用于定义Cookie的生存时间,以秒为单位.如果超过了这个时间,客户端就应该丢弃这个cookie.如果指定的秒数为0,表示这个cookie应立即被丢弃.Path属性是可选的,用于指定这个cookie在哪一个URL子集下有效.Secure属性是必需的,它的值是一个十进制数,标识cookie依照的状态管理规范的版本.例如:
set-cookie: uid = zhangsan; Max-Age=3600; Domain=.sun.org; Path=/bbs; Version=1
它表示一个名为uid,值为zhangsan的cookie.生存时间为3600秒,在sunxin.org域的 bbs路径下有效.在3600秒后,客户端将抛弃这个cookie. 当IE收到上面这个响应报头后,可以选择接受或拒绝这个cookie.如果ID接受了这个cookie,当浏览器下一次发送请求到http://www.sunxin.org/bbs路径下的资源时,同时也会发送以下的请求报头:
cookie:uid=zhangsan.

下面是在网上学习一番后得到的总结(如有纰漏请指正):

1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.test.com/test/test.aspx,那么domain默认为www.test.com。而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.test.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该cookie的domain设置为t2.test.com。

2.path表示cookie所在的目录,asp.net默认为/,就是根目录。在同一个服务器上有目录如下:/test/,/test/cd/,/test/dd/,现设一个cookie1的path为/test/,cookie2的path为/test/cd/,那么test下的所有页面都可以访问到cookie1,而/test/和/test/dd/的子页面不能访问cookie2。这是因为cookie能让其path路径下的页面访问。

3.浏览器会将domain和path都相同的cookie保存在一个文件里,cookie间用*隔开。

4.含值键值对的cookie:以前一直用的是nam=value单键值对的cookie,一说到含多个子键值对的就蒙了。现在总算弄清楚了。含多个子键值对的cookie格式是name=key1=value1&key2=value2。可以理解为单键值对的值保存一个自定义的多键值字符串,其中的键值对分割符为&,当然可以自定义一个分隔符,但用asp.net获取时是以&为分割符。

时间: 2024-10-04 23:42:12

Cookie的格式及组成的相关文章

Django设置Cookie的过期时间expires, max_age的格式

cookie中 max_age和expires的关系: 1. 若没有填写 max_age, expires ,默认都为None 此时该cooike为临时的,只存在浏览器内存中, 关闭浏览器则自动删除 2. 只有max_age, 则按秒计算过期时间, 浏览器会存在本地缓存路径, 并自动删除过期cookie 3. 只有expires, 则按照时间字符串计算过期时间, 浏览器会存在本地缓存路径, 自动删除过期cookie 3. 若 max_age和 expires 同时存在, 则默认使用 max_ag

关于Cookie的知识的总结

Cookie的类型 会话cookie和持久cookie 会话cookie是一种临时cookie,它记录了用户访问站点时的设置和偏好,当用户退出浏览器时,会话cookie就会被删除. 持久cookie的生存时间更长一些,它存储在用户的硬盘上,浏览器退出或计算机重启时他们仍然存在. 会话cookie与持久cookie之间的唯一区别就是它们的过期时间. 如果设置了Discard参数(cookie版本1中的参数),或者没有设置Expires或者Max-Age参数(cookie版本1中的参数)来说明扩展的

Javascript操作cookie

从事web开发也有些日子了,cookie 是个啥差不多能说明白,可是实际自己一上手操作就是得去搜索(你们懂的),结果被鄙视了...所以就写一篇博文做为自己的学习笔记 什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值." - w3school cookie 是访问过的网站创建的文件,用于存储浏览信息,例如个人资料信息. 从JavaS

python selenium-webdriver 通过cookie登陆(十一)

上节介绍了浏览器的常用方法,涉及到了cookie的使用,本节介绍一下如何利用cookie进行登陆系统,这里使用到了request模块,我们首先利用request模块,请求登陆地址进行登陆,登陆成功以后获取cookie值,然后再通过add_cookie添加到浏览器,使系统处于登陆状态.这里需要注意的是request请求返回的cookie的格式不能直接传入add_cookie方法,所以这里需要进行转换. #这里需要注意区别,按住格式进行转换 #request 请求返回cookie的格式 {'PHPS

常用的本地存储-----cookie篇

1.引言 随着浏览器的处理能力不断增强,越来越多的网站开始考虑将数据存储在「客户端」,那么久不得不谈本地存储了. 本地存储的好处: 一是避免取回数据前页面一片空白,如果不需要最新数据也可以减少向服务器的请求次数,从而减少用户等待从服务端获取数据的时间. 二是网络状态不佳时仍可以显示离线数据. 2.本地存储 用chrome浏览器打开一个网页,F12进入开发者模式,点击Application,我们可以看到: 以上的Local Stroage . Session Stroage . IndexedDB

cookie的设置、获取以及删除

首先介绍一下cookie的基本信息: cookie是以域为单位的,它必须放在服务器的的环境下,但是cookie的容量小,只有4kb,并且也不安全,还有入股cookie的名字相同,会修改或者覆盖原来的值,如果名字不同,会添加一条cookie: 接下来再和大家说一声关于获取cookie: 获取到cookie的格式都是字符串: 父级种下的cookie,子级可以获取到:子级种下的cookie,父级获取不到: 还有就是cookie的path:可以设置,一般都是设置到 '/' 根目录下: 好了,下面就是我封

Cookie文件说明及IE的Cookie文件格式

1.Cookie文件的实质 Cookie实际上是Web服务端与客户端(典型的是浏览器)交互时彼此传递的一部分内容,内容可以是任意的,但要在允许的长度范围之内.客户端会将它保存在本地机器上(如IE便会保存在本地的一个txt文件中),由客户端程序对其进行管理,过期的Cookie会自动删除.每当客户端访问某个域下某个目录中的网页时,便会将保存在本地并且属于那个域下对应目录的有效Cookie信息附在网页请求的头部信息当中一并发送给服务端. 2.Cookie文件的保存位置 不同的客户端,其Cookie的保

Android Cookie共享到WebView避免再次登录(保持登录状态)

最近在做项目时用到了webview打开指定链接的网页,可已经把webview设置了cookie但始终跳转到登录页面,这明显是cookie没有设置成功导致webview没有将设置好的cookie发送出去…… 1 2 3 4 5 CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true)

php curl 生成的cookie 文件含义 cookie 属性含义

最近用了curl 感觉还是很方便的,看了下curl生成的 cookie 文件 格式 , 对其中一些值的含义不是很明白,去找了些cookie的资料看了下,做下备忘 PHP curl 生成 的 cookie文件 格式如下 # Netscape HTTP Cookie File # http://curl.haxx.se/rfc/cookie_spec.html # This file was generated by libcurl! Edit at your own risk. jifen.xx.