🍪 Cookie 基础 合规改造方案 · 第二章

📌 数据合规专家 · UI/UX 设计 🎒 中小学生色系
🍪 什么是 Cookie?

Cookie(也叫 HTTP Cookie / Web Cookie)是服务器发送到用户浏览器并保存在本地的一小段数据(通常小于 4KB)。它由网景公司发明,用于“记忆”状态信息——因为 HTTP 协议本身是无状态的。

  • 🔹 会话管理:登录状态、购物车、游戏分数。
  • 🔹 个性化:语言偏好、主题、字体大小。
  • 🔹 跟踪:记录浏览行为(合规改造重点⚠️)。
💡 简单理解:Cookie 就像是网站给你贴的一张“便利贴”,每次你访问时它都看一眼便利贴上的内容。
⚙️ 工作原理 · 请求-响应流程

浏览器与服务器通过 Set-Cookie 和 Cookie 头部协作:

🌐 浏览器 请求 + Cookie ( 本地存储 ) 🖥️ 服务器 响应 Set-Cookie ( 生成/更新 ) ① HTTP 请求 (携带 Cookie 头) ② HTTP 响应 (Set-Cookie 指令) 🔄 每次请求自动附加
  1. 浏览器向服务器请求页面 → 请求头中可能包含已有 Cookie。
  2. 服务器返回响应,通过 Set-Cookie 头部告知浏览器存储键值对。
  3. 后续请求,浏览器自动在 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、Secure

⏳ 生命周期 · 两种类型

  • 会话 Cookie (Session Cookie):无 Expires / Max-Age,关闭浏览器即删除。
  • 持久 Cookie (Persistent Cookie):指定过期时间,保存在磁盘直到过期或被删除。
📌 生命周期示意图 (持久Cookie)
有效期 (Max-Age / Expires) 过期后删除 创建 过期
🧑‍💻 代码示例 · HTTP 与 JavaScript

服务端 (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";
⚠️ 合规提示:第三方跟踪Cookie必须获得用户明确同意,且提供一键撤回。