Skip to main content

Cookie

  • rfc6265 HTTP State Management Mechanism
  • Same-Site Cookies
    • SameSite
      • 请求时只有 匹配站点的 cookie 会被发送
      • 默认不会随 top-level navigations 发送
    • SameSite=Strict
      • 与 same-site 请求一起发送
    • SameSite=Lax
      • same-site, cross-site
  • Access-Control-Allow-Credentials: true
    • 服务端接受 cookie
  • withCredentials: true
    • 客户端请求带上 cookie
  • __Host-
    • 必须 Secure 属性 - 必须 HTTPS
    • 没有 Domain - 不允许跨域
    • 路径必须为 /
  • __Secure-
    • 必须 Secure 属性 - 必须 HTTPS
    • 可以有 Domain - 允许跨域
    • 没有路径限制
  • Partitioned
    • 必须 Secure
    • 必须 SameSite=None
    • 相同的 Cookie 在不同的站点上下文中不会互相影响
    • 用于第三方环境中,防止跟踪和跨站点攻击
    • 作用和优势
      • 防止跨站点跟踪
      • 增强安全性
      • 限制第三方 Cookie 的影响
Set-Cookie: my_cookie=value; SameSite=None; Secure; Partitioned
属性名描述示例值备注
Name名称session_id必须
Valueabc123必须
Expires过期时间Tue, 19 Jan 2038 03:14:07 GMT不设置则为会话 Cookie
Max-Age有效期(秒)3600与 Expires 互斥,优先级高于 Expires
Domain适用的域名example.com默认为创建该 Cookie 的域名
Path适用的路径/默认为创建该 Cookie 的路径
Secure仅通过 HTTPS 传输Secure只在 HTTPS 上有效
HttpOnly不能通过 JavaScript 访问HttpOnly提升安全性,防止 XSS 攻击
SameSite限制跨站点请求时发送 Cookie 的方式Lax, Strict, NoneLax 和 Strict 提升安全性,None 需要配合 Secure 属性
__Host-前缀, 强制 Secure 属性, 路径为 /, 且没有 Domain__Host-session=abc123; Secure; Path=/提高安全性,确保 Cookie 在主域及其所有路径上有效
__Secure-前缀, 强制 Secure 属性__Secure-session=abc123; Secure提高安全性,允许跨子域使用
Partitioned指定 Cookie 在不同的上下文中隔离Partitioned必须配合 SameSite=None 和 Secure 属性使用,提升隐私和安全性