cookie常用字段
后端设置cookie:响应头Set-Cookie
前端操作cookie:document.cookie
cookie字段说明
name/value
Domain
设置cookie可以送达的主机名(默认为当前主机)
例如设置为 .taobao.com,则xxx.taobao.com有效
跨域设置无效,例如:Set-Cookie: qwerty=219ffwef9w0f; Domain=baidu.com;
注意
Cookie的作用域不区分协议和端口,参考:http://blog.haoji.me/cookie-scope.html
Path
设置URL中必须包含该路径才会发送该条cookie信息
(Domain 和 Path 标识共同定义了 Cookie 的作用域)
例如设置Path=/docs,则发送请求时/docs/xxx才会携带该cookie
Expires
设置cookie过期时间(根据本地时间)
示例:Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
缺少Expires字段时表示会话性cookie,关闭浏览器失效
Max-Age
设置cookie在指定秒后过期(优先级高于Expires)
Set-Cookie: id=a3fWa; Max-Age=604800;
为负数是表示为会话性cookie
Secure
标记Secure的cookie只会通过https才会发送
HTTPOnly
阻止客户端通过document.cookie访问cookie。【防止XSS(跨站脚本攻击)】
SameSite 在跨站请求时不发送Cookie【阻止CSRF(跨站请求伪造)攻击】
Strict
- 最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie. 只有当前网页的 URL 与请求目标一致,才会带上 Cookie
Lax
- Lax
允许部分第三方请求(a链接、get表单、预加载)携带cookie(chrome80的默认值)
None(cookie的属性设置为必须同时设置Secure,否则不会生效)
- None
无论跨站都会发送cookie(chrome80之前的版本默认值)
WARNING
cookie的SameSite属性为None,Dom标签跨域才会发送cookie
- Set-Cookie: widget_session=abc123; SameSite=None; Secure
SameParty 【暂未全面开放】
为了应对第三方cookie逐渐消失; 通常用于单点登录等
SameParty Cookie 必须包含 Secure.
SameParty Cookie 不得包含 SameSite=Strict.
详细用法参考:参考