blog
blog copied to clipboard
图解HTTP之与Cookie相关的首部字段
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