blog icon indicating copy to clipboard operation
blog copied to clipboard

图解HTTP之与Cookie相关的首部字段

Open chenxiaochun opened this issue 8 years ago • 0 comments

Web网站为了管理用户的状态会把一些临时数据写入用户的浏览器内。当用户访问该Web网站时,可通过通信方式取回之前发放的Cookie。调用Cookie时,需要校验它的有效期、发送方的域、路径、协议等信息。

1994年由网景公司设计出了Cookie,并正式应用在网景浏览器中。目前使用最广泛的Cookie标准并不是RFC标准中定义的任何一个。而是在网景公司制定的标准上进行扩展后产物。

一、Set-Cookie

Set-Cookie: status=enable; expires=Tue, 05 Jul 2011 07:26:31 GMT; ⇒path=/; domain=jd.com;

Set-Cookie字段的属性值:

属性 说明
NAME=VALUE 赋予Cookie的名称和其值(必需项)
expires=DATE Cookie的有效期(若不明确指定则默认为浏览器关闭前为止)
path=PATH 将服务器上的文件目录作为Cookie的适用对象(若不指定则默认为文档所在的文件目录)
domain=域名 作为Cookie适用对象的域名(若不指定则默认为创建Cookie的服务器的域名)
secure 仅在HTTPS安全通信时才会发送Cookie
HttpOnly 加以限制,使Cookie不能被JavaScript脚本访问
  • expires属性

此属性用来指定浏览器可发送Cookie的有效期。可通过覆盖已过期的Cookie,实现对客户端Cookie的实质性删除操作。

  • path属性

用于限定Cookie发送范围的文件目录。

  • domain属性

此属性指定的域名可做与结尾匹配一致。比如指定jd.com后,www.jd.com或者www2.jd.com等都可以发送Cookie。因此,除了针对具体指定的多个域名发送Cookie之外,不指定domain属性显得更安全。

  • secure属性

此属性用于限制Web页面仅在HTTPS安全连接时,才可以发送Cookie。

Set-Cookie: name=value; secure
  • HttpOnly属性

指定此属性可禁止JavaScript脚本访问Cookie,可以防止跨站脚本攻击(Cross-site scripting,XSS)对Cookie信息的窃取。虽然它当初并不是为了这个上的而设计的。

Set-Cookie: name=value; HttpOnly

二、Cookie

向服务器发送请求,此首部字段会包含客户端中的Cookie信息。

Cookie: status=enable

chenxiaochun avatar Jun 06 '17 09:06 chenxiaochun