Cookie 基本工作原理 — 在无状态的 HTTP 之上记住用户

1 初次访问:生成识别码并设置 Cookie

浏览器
首次访问,无 Cookie
Web 服务器
识别新用户
后端数据库
新建用户记录
① HTTP 请求(无 Cookie 头)
② 生成识别码
③ HTTP 响应: Set-Cookie: id=abc123
④ 存储

浏览器初次访问网站,发送 HTTP 请求(不含 Cookie 首部)。

服务器检测到没有 Cookie,生成一个唯一的 Cookie 识别码(如 id=abc123),并在后端数据库中创建对应记录。

服务器在 HTTP 响应报文中添加 Set-Cookie: id=abc123 首部行。

浏览器收到响应后,将 Cookie 识别码存入本地的 Cookie 文件。

2 再次访问:自动携带 Cookie

浏览器
Cookie 文件中有 id=abc123
Web 服务器
识别用户
后端数据库
查询识别码→用户信息
⑤ HTTP 请求: Cookie: id=abc123
⑥ 查询
⑦ HTTP 响应:个性化网页内容

浏览器再次访问同一网站,自动从 Cookie 文件取出识别码,放入请求报文的 Cookie: id=abc123 首部行。

服务器根据识别码从后端数据库中找到用户的历史记录和偏好。

服务器返回为这个用户定制的个性化网页内容。

此后的每次请求,浏览器都自动携带该网站的 Cookie。服务器无需用户每次登录就能识别用户身份。

Cookie 工作流程总结

关键步骤

1. 初次访问:浏览器发请求(无 Cookie)→ 服务器生成识别码并存数据库 → 响应中 Set-Cookie 返回识别码 → 浏览器存 Cookie 文件。
2. 后续访问:浏览器在每次请求中自动带上 Cookie 头 → 服务器识别用户 → 返回个性化内容。

两个关键 HTTP 首部

Set-Cookie响应首部,服务器用来设置 Cookie
Cookie请求首部,浏览器用来回传 Cookie

Cookie 解决了什么问题

HTTP 本身是无状态协议——每个请求-响应都是独立的,服务器不记得任何历史信息。

Cookie 在无状态的 HTTP 之上建立了一种状态维护机制,使服务器能够:
• 识别回头用户
• 维护用户登录状态("记住我")
• 保存购物车内容
• 提供个性化推荐
• 跟踪用户行为