HTTP Cookie & Set-Cookie 头部
当服务器收到HTTP请求时,服务器可以在响应头里面添加一个Set-Cookie选项。用户代理(一般是浏览器)收到响应后通常会保存下Cookie,之后对该服务器每一次请求中都通过Cookie请求头部将Cookie信息发送给服务器。这种机制使得服务器能够在无状态的HTTP协议中维护稳定的状态信息。
服务器可以在一个响应中设置多个Set-Cookie头部,用于添加、更改、删除这些Cookies,而不能将多个Set-Cookie头部域合并成一个。
Set-Cookie头部域中的属性大小写不敏感,不能识别的属性会被丢弃掉,但不影响其他属性的存储。
会话期Cookie & 持久化Cookie
Set-Cookie时,如果不设置 Expires 或 Max-Age 指令,那么表示这是一个会话期 cookie ,否则是持久化 cookie。会话期 cookie 在一个会话结束时(即客户端被关闭时)会被移除。然而,很多Web浏览器支持会话恢复功能,可以使浏览器保留所有tab标签,然后在重新打开浏览器的时候将其还原。与此同时,cookie 也会恢复,就跟从来没有关闭浏览器一样。
Expires属性
Expires属性标识cookie 的最长有效时间,形式为符合 HTTP-date 规范的时间戳。
Max-Age属性
Max-Age属性标识在 cookie 失效之前需要经过的秒数。秒数为 0 或 -1 将会使 cookie 直接过期。Max-Age 优先级高于Expires