什么是 Cookie?浏览器 Cookie 详解

TL;DR:Cookie 是网站存在你浏览器里的一小段数据,通常只有几百字节,用于在请求之间记住信息。Cookie 支撑了登录、购物车和分析;它们也催生了如今被浏览器逐步收紧的跨站追踪时代。

Cookie 是一条 name-value 文本记录,网站通过 Set-Cookie HTTP 响应头在你的浏览器中设置它,浏览器再通过 Cookie 请求头自动把它附加到之后对同一域名的请求上。Cookie 是这个本无状态的 HTTP 网络上最早的状态机制——它早于 localStorage、IndexedDB、service worker 以及一切现代客户端存储方案。你遇到过的每一个 Cookie,从”保持登录”到询问你的欧盟同意横幅,都由这一个小协议管辖1

简而言之:Cookie 是 HTTP 之上的一层薄薄的机制。服务器用 Set-Cookie: name=value 响应头设置一个;浏览器把它存进按域名的 Cookie 罐;之后每次匹配请求,浏览器把 Cookie: name=value 发回去。没有客户端握手——浏览器在 RFC 6265 的约束内服从服务器的指令。

Cookie 机制普遍归功于 Netscape 工程师 Lou Montulli,他在 1994 年为电商客户 MCI Net 解决”在页面之间记住购物车”的问题而引入了它2。三十年后,底层协议基本没变。正式规范是 IETF RFC 62651,并有一份正在演进的 IETF 草案3收紧安全和隐私边界。

一次最小的 Cookie 交换长这样:

# 服务器响应
HTTP/1.1 200 OK
Set-Cookie: sid=abc123; Path=/; HttpOnly; Secure; SameSite=Lax

# 客户端之后对同一站点的请求
GET /account HTTP/1.1
Cookie: sid=abc123

浏览器不解释 abc123 这个值——它对浏览器是不透明的。服务器才解释它(通常作为数据库会话键)。浏览器的职责是根据 Cookie 的 DomainPathSecureSameSite 和过期属性,决定每次请求附带哪些 Cookie。

关键:Cookie 由服务器设置、由浏览器存储、在之后每次匹配请求时由服务器读取。浏览器是信使,不是作者。

简而言之:一个 Cookie 有一个必需部分(name=value)和服务器可设置的七个属性:DomainPathExpiresMax-AgeSecureHttpOnlySameSite。每个属性都收窄或限制浏览器何时把 Cookie 发回。

RFC 62651 及其 bis 修订3 定义的完整属性集:

简而言之:Cookie 沿两条正交的轴分类——生命周期(会话 vs 持久)和来源(第一方 vs 第三方)。一个 Cookie 在每条轴上总有一个取值。隐私法规和浏览器设置再叠加一套基于用途的分类(严格必要 / 功能 / 分析 / 广告),就是你在同意横幅上看到的那些。

用户和监管机构常谈的 6 个常见类别,映射到底层协议:

类别生命周期来源典型用途浏览器默认策略(2026)
会话 Cookie会话第一方登录会话、当前购物车默认允许
持久第一方 Cookie持久第一方”记住我”、语言偏好默认允许
严格必要二者皆可第一方鉴权、防欺诈无需同意(GDPR)
功能 / 偏好持久第一方界面主题、字号建议同意(GDPR)
第一方分析持久第一方第一方分析欧盟需同意
第三方广告持久第三方广告定向、再营销、跨站标识Safari / Firefox 屏蔽;Chrome 受限5

英国信息专员办公室(ICO)简洁地概括了这一区别6:

严格必要的 Cookie 是为提供用户请求的在线服务所必需的。其余大多数 Cookie 在设置前需要知情同意。

简而言之:在协议层面 Cookie 是通用的 name-value 存储。实践中,网络把 Cookie 用于六类不同的任务,大致按对用户体验的重要程度递减排列。

现代网络上 Cookie 的六大主导用途:

  1. 鉴权与会话管理 —— 一个会话 ID Cookie,告诉服务器某个请求属于哪个已登录用户。几乎总是 HttpOnlySecureSameSite=LaxStrict
  2. CSRF 防护令牌 —— 服务器在状态变更请求时校验的随机防伪值。通常与一个隐藏表单字段配对。
  3. 购物车与未完成的工作 —— 在页面加载之间保留购物车内容和表单草稿。常是一个指向服务端状态的 ID。
  4. 用户偏好 —— 语言、主题、布局密度、无障碍设置。带数月到数年 Max-Age 的小型持久 Cookie。
  5. 第一方分析 —— 为 Plausible、Fathom 或自托管 PostHog(配置为基于 Cookie 时)做访客识别和会话计时。国内场景中,部分团队也会把第一方统计自托管以避免第三方追踪。
  6. 广告与跨站追踪 —— 广告网络、再营销方、分析平台设置的第三方 Cookie,需要跨多个站点识别同一用户。这是浏览器正在主动收紧的类别。

对开发者而言,实际含义是:你设置的大多数 Cookie 都应是第一方、限定到当前站点、标记 HttpOnlySecure、并给 SameSite=Lax,除非你有需要 None 的特定跨站流程。

SameSite、HttpOnly、Secure —— 三个安全属性

简而言之:三个 Cookie 属性——SameSiteHttpOnlySecure——各自防御一类不同的攻击。把这三个都设对,是服务器能做的杠杆最高的单项 Cookie 安全改进。

这三个属性构成现代 Cookie 安全基线。每个防御一类特定攻击:

Google 的 web.dev 指南在优先级上说得很明确7:“如果你今天只做一件事,就给每个会话 Cookie 设上 SameSite=Lax。“

第一方与第三方 Cookie,以及退役故事

简而言之:第一方 Cookie 由地址栏里的站点设置;第三方 Cookie 由代码运行在该站点上的另一个域名设置。第三方 Cookie 建起了现代广告追踪经济,现代浏览器正系统性地限制或消除它们。

第三方 Cookie 的收紧是该协议诞生以来对 Cookie 生态最具影响的变化。截至 2026 年中各浏览器现状:

对正当的跨站用例(联邦登录、嵌入式结账 iframe),现代替代是 CHIPS —— Cookies Having Independent Partitioned State8。带 Partitioned 属性的 Cookie 按顶层站点分罐存储,因此在两个不同父站点下加载的同一 iframe 读不到同一个 Cookie。CHIPS 保留了”在这个挂件内记住设置”的正当用例,同时打断跨站标识流。

如果你维护的服务今天依赖第三方 Cookie,眼下的工作是审计你的 Cookie:哪些需要跨站可见(用 CHIPS)、哪些本就是为追踪设计的(在 Privacy Sandbox 或第一方数据上重建)。

简而言之:每个现代浏览器都能通过设置或开发者工具查看 Cookie。对可重复的工作流——调试会话 Bug、把 Cookie 导出为测试夹具、审计某站点存了什么——Manifest V3 扩展如 CookieVault Editor 是标准工具。下面的 8 步检查流程在每个 Chromium 浏览器上都适用。

在 Chrome 里查看和编辑 Cookie 的 8 步速查(Edge、Brave、Opera、Vivaldi、Arc 完全相同;Firefox 类似但菜单布局不同):

  1. 在标签页打开目标站点。
  2. F12 打开开发者工具。
  3. Application 标签。
  4. 在左侧栏 Storage 下点 Cookies
  5. 点域名查看范围内所有 Cookie。
  6. 双击某个单元格(Value、Expires、SameSite 等)就地编辑。
  7. Enter 提交;浏览器立即应用。
  8. 刷新页面,下次请求即带上修改后的 Cookie。

批量删除 Cookie 见 Chrome 删除 Cookie 指南 的三种方法。想清追踪器又保留登录态见 清 Cookie 但保留登录态。想跨多站点一键可重复编辑,CookieVault Editor 是我们维护的开源 Manifest V3 工具。

简短澄清几条你可能在网上见过、但并不真实的说法:

另见


Footnotes

  1. 当前 IETF 规范是 RFC 6265 ——“HTTP State Management Mechanism”,见 https://datatracker.ietf.org/doc/html/rfc6265。该文档定义 Set-CookieCookie 头、Cookie 属性语义、存储模型和 Cookie 匹配规则。 2 3

  2. Mozilla 开发者网络的 HTTP cookies 参考 https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies 概括了现代 Cookie 属性集和浏览器端处理规则。1994 年的起源故事在网络史料中被广泛引用,可追溯到 Lou Montulli 在 Netscape 做”购物篮”功能的工作。

  3. Cookie 规范的演进版是 “RFC 6265bis”——正式名 draft-ietf-httpbis-rfc6265bis,由 IETF HTTP 工作组发布于 https://datatracker.ietf.org/doc/draft-ietf-httpbis-rfc6265bis/。它收紧前缀规则(`__Host-`、`__Secure-`)、正式化 SameSite、细化分区语义。 2

  4. 每 Cookie 4 KB、每域名 50 个的数字是 RFC 6265 §6.1 的建议。真实浏览器限制约为建议下限的两倍,但因浏览器而异;Chrome 团队的 chrome.cookies API 参考 https://developer.chrome.com/docs/extensions/reference/api/cookies 记录了 Chrome 的实际限制。

  5. Chrome 的第三方 Cookie 立场多次变化。当前路线记录在 Privacy Sandbox https://developer.chrome.com/docs/privacy-sandbox/。该根路径下的状态页和各 API 文档追踪持续变化。 2

  6. 英国信息专员办公室(ICO)在《隐私与电子通信条例》(PECR)下发布关于 Cookie 与同意的实务指南。ICO 多次重构该指南页、URL 不稳定;搜索 “ICO PECR cookies guidance”,或从 https://ico.org.uk 进入 “For organisations → Online tracking”。上文表格注释里转述的”严格必要”定义遵循 ICO 的表述。

  7. Google web.dev 的入门文《SameSite cookies explained》https://web.dev/articles/samesite-cookies-explained 是面向从业者的 SameSite 默认值与 Chrome 推出历史的权威参考。 2

  8. CHIPS 规范——“Cookies Having Independent Partitioned State”——记录在 https://developer.chrome.com/docs/privacy-sandbox/chips。CHIPS 让跨站 Cookie 加入按顶层站点的分区,从而在第三方 Cookie 被屏蔽的情况下存活,而不支持跨站追踪。