6.7.1 Set-Cookie
Set-Cookie的字段值
expires属性
Cookie的expires属性指定浏览器可发送Cookie的有效期。
当省略expires属性时,其有效期仅限于维持浏览器会话(Session)时间内。这通常限于浏览器应用程序被关闭之前。
另外,一旦Cookie从服务器端发送到客户端,服务端就不存在可以显式删除Cookie的方法。但可以覆盖已经过期的Cookie,实现对客户端Cookie的实质性删除操作。
path属性
path属性可用于限制指定Cookie的发送范围的文件目录
domain属性
通过 Cookie的domain属性 指定的域名 可做到与结尾匹配一致。比如,当指定 example.com后,除example.com以外,www.example.com或www2.example.com等都可以发送cookie.
因此,除了针对具体指定的多个域名发送Cookie之外,不指定domain属性显得更安全。
secure属性
secure属性用于限制Web页面仅在HTTPS安全连接的时候,才可以发送Cookie。如下所示:
以上例子仅当在https://www.example.com/(HTTPS) 安全连接的情况下才会进行Cookie的回收。也就是说,即使域名相同,
http://www.example.com/(HTTP)也不会发生 Cookie的回收行为。
当省略secure属性时,不论是HTTP还是 HTTPS,都会对Cookie进行回收。
HttpOnly属性
Cookie的HttpOnly属性使得Javascript脚本无法获得Cookie。其主要目的为了防止跨站脚本攻击(Cross-site-scripting, XSS)对 Cookie信息的获取。如下图所示:
通常从Web页面还可以对Cookie进行读取操作。但使用 Javascript的document.cookie就无法读取附加HttpOnly属性后的Cookie的内容了。
6.7.2 Cookie
Cookie会告诉服务器,当客户端想获得HTTP状态管理支持时,就会在请求中包含从服务器接收到的Cookie。接收到多个Cookie时,同样可以以多个Cookie形式发送。