Cookie(也叫 HTTP Cookie / Web Cookie)是服务器发送到用户浏览器并保存在本地的一小段数据(通常小于 4KB)。它由网景公司发明,用于“记忆”状态信息——因为 HTTP 协议本身是无状态的。
浏览器与服务器通过 Set-Cookie 和 Cookie 头部协作:
Cookie。Set-Cookie 头部告知浏览器存储键值对。Cookie 头部携带该域下的 Cookie。Cookie 通过属性控制作用域、安全性和存活时间:
| 属性 | 说明 | 示例 / 值 |
|---|---|---|
Domain | 指定哪些域名可以访问该 Cookie | .example.com |
Path | 限定 URL 路径范围 | /shop |
Expires | 绝对过期时间 (HTTP日期) | Wed, 21 Oct 2025 07:28:00 GMT |
Max-Age | 相对过期秒数 (优先级高于 Expires) | 3600 (1小时) |
Secure | 仅通过 HTTPS 传输 | 标记存在 |
HttpOnly | 禁止 JavaScript 访问 (防XSS) | 标记存在 |
SameSite | 控制跨站请求是否发送 (Lax/Strict/None) | Lax (默认) |
SameSite、HttpOnly、SecureExpires / Max-Age,关闭浏览器即删除。服务端 (Node.js Express 风格) 设置 Cookie:
// 设置持久Cookie,安全+HttpOnly+SameSite
res.setHeader('Set-Cookie', [
'sessionId=abc123; Max-Age=86400; Path=/; Secure; HttpOnly; SameSite=Lax',
'tracking=off; Expires=Thu, 01 Jan 2026 00:00:00 GMT; Path=/; SameSite=Strict'
]);
客户端 JavaScript (仅限非HttpOnly) 读取:
// 读取所有cookie (字符串)
const cookies = document.cookie;
console.log(cookies); // "theme=light; language=zh"
// 设置cookie (简易)
document.cookie = "prefer=dark; Max-Age=7200; Path=/; SameSite=Lax";