cookie 
cookie 是服务端发送给浏览器的少量数据,浏览器保存这些数据,后续发送给相同服务器的请求中带上这些数据,从而使服务器知道哪些请求来自同一个浏览器。
本质是为了给无状态的 HTTP 提供记录状态的功能。

Set-Cookie 
设置 cookie 的响应头。
http
Set-Cookie: key1=value1;key2=value2
Set-Cookie: key1=value1
Set-Cookie: key2=value2发送目标 
Domain:Cookie 应该发送到哪些域名- 默认:请求域名,不包括子域名
 - 显式设置为服务端域名,包含子域名 
- 比如设置 
Domain=mozilla.org,也会向developer.mozilla.org发送 Cookie 
 - 比如设置 
 
Path:Cookie 应该发送到哪些路径- 默认:请求路径
 - 某个路径:包括子路径 
- 比如设置 
Path=/docs,也会匹配/docs/、/docs/web、/docs/web/http等 
 - 比如设置 
 
过期时间 
Expires:过期时间,GMT 格式,到期 Cookie 被删除- 默认是 Session Cookie
 
Max-Age:有效时间,以秒为单位,到期 Cookie 被删除
安全相关 
Secure:只使用 HTTPS 发送 Cookie,可以防止中间人攻击HttpOnly:JS 无法通过document.cookie访问 Cookie,可以防止 XSS 攻击SameSite:是否通过跨站请求发送 Cookie,可以防止 CSRF 攻击Strict:只在 Cookie 设置的站点发送Lax(默认):同 Strict,但是允许从外部站点跳转到源站点时发送 Cookie- 安全 HTTP 方法:
GET、HEAD、OPTIONS - 执行顶级导航 (更改浏览器地址栏中的 URL),而不是 iframe 或 AJAX 请求
 
- 安全 HTTP 方法:
 None:允许跨站请求发送 Cookie,必须设置Secure,否则失效
Cookie 
请求与 Domain/Path 匹配的 URL 时,会在 Cookie 请求头带上 cookie。
http
Cookie: key1=value1;key2=value2
Cookie: key1=value1
Cookie: key2=value2document.cookie 
JS 通过 document.cookie 读写非 HttpOnly 的 cookie。
js
// 添加 cookie
document.cookie = 'yummy_cookie=choco';
// 多次赋值会添加 cookie,不会覆盖
document.cookie = 'tasty_cookie=strawberry';
// 读取所有 cookie
console.log(document.cookie);
// yummy_cookie=choco; tasty_cookie=strawberry限制 
- 每个键值对不能超过 4KB
 - 每个域名的 cookie 上限大约 20 个
 
用途 
- 会话管理 (Session Management) 
- 登录、购物车、游戏分数等服务器需要存储的状态信息
 
 - 个性化 (Personalization) 
- 用户偏好设置、主题等其他设置信息
 
 - 跟踪 (Tracking) 
- 记录和分析用户的行为
 
 
第三方 Cookie 
- 由请求的页面以外的其他域设置的 Cookie,称为第三方 Cookie,通常用于跟踪和广告
 - 浏览器允许禁止第三方 Cookie