Cookie Consent 基础
Cookie 横幅几乎出现在每个网站上,但真正合规的并不多。很多网站的「接受」按钮被高亮放大,「拒绝」却藏在二级页面;有些横幅只是在「通知」你使用了 Cookie,而不是在「征求同意」。对于出海产品而言,Cookie Consent 不仅是法律义务,更是用户信任的基石。本文将从基础概念出发,拆解 Cookie 类型、合规要求、实现方法和最佳实践,帮助你构建一个真正合规的同意机制。
什么是 Cookie Consent
Cookie Consent 是指网站在收集、存储或处理用户设备上的 Cookie(及类似跟踪技术)之前,获取用户明确授权同意的机制。它的核心目的不是「告知用户我用了 Cookie」,而是「在用户做出知情选择之前,不加载任何非必要 Cookie」。
这个概念的法律根源主要来自两个层面:
- ePrivacy Directive(2002/58/EC):也被称为「Cookie Law」,要求在使用 Cookie 或类似跟踪技术之前获得用户同意。只有「严格必要」的 Cookie 可以豁免。
- GDPR(General Data Protection Regulation):对「同意」提出了更严格的定义——必须是自由给出、特定、知情、明确且可撤回的。
两者的关系是:ePrivacy 管「什么时候需要同意」,GDPR 管「同意的标准是什么」。在实际合规中,二者共同约束 Cookie Consent 的设计和实现。
Cookie 类型与分类
Cookie 按用途可以分为多个类别,合规实现的核心前提是准确分类。以下表格列出了主要的 Cookie 类型及其特征:
| 类型 | 说明 | 是否需要同意 | 典型示例 |
|---|---|---|---|
| 严格必要(Strictly Necessary) | 维持网站基本功能所必需 | 否,豁免 | 会话 Cookie(session)、购物车 Cookie、安全认证 Cookie |
| 功能性(Functional) | 记住用户偏好以改善体验 | 是 | 语言偏好、字体大小、地区设置 |
| 分析/性能(Analytics/Performance) | 收集网站使用数据 | 是 | Google Analytics、Plausible、PostHog |
| 营销/广告(Marketing/Advertising) | 用于广告定向和效果追踪 | 是 | Google Ads、Facebook Pixel、TikTok Ads |
| 社交/第三方(Social/Third-party) | 嵌入的社交媒体功能 | 是 | YouTube 嵌入、Twitter 嵌入、 Disqus 评论 |
需要注意的是,「严格必要」的豁免条件非常窄——只有网站离开它就完全无法运行的 Cookie 才能归入此类。一个常见的误判是:把「提升用户体验」等同于「严格必要」,这在监管实践中通常不被接受。
合规要求详解
GDPR(欧盟通用数据保护条例)
GDPR 对 Cookie Consent 的要求可以归纳为五个合法条件:
| 条件 | 含义 | 实践要求 |
|---|---|---|
| 自由给出(Freely given) | 不能通过胁迫或捆绑来获取同意 | 不能因为拒绝 Cookie 就限制网站功能 |
| 特定(Specific) | 同意必须针对明确的目的 | 按 Cookie 类别分别征求同意 |
| 知情(Informed) | 用户清楚了解同意的内容 | 在同意前提供每个 Cookie 的用途说明 |
| 明确(Unambiguous) | 需要积极的确认行为 | 不能使用预勾选的复选框 |
| 可撤回(Withdrawable) | 用户可以随时撤回同意 | 提供与给予同意同样便捷的撤回入口 |
2024 年 1 月,欧盟数据保护监管机构联合发布了关于 Cookie 的最新指导,明确指出:即使广告投放是网站商业模式的核心,用于个性化广告的 Cookie 仍然需要单独获取用户同意,不能以「商业必要性」为由绕过同意机制。
ePrivacy Directive
ePrivacy 指令在 GDPR 之上增加了一层前置要求:
- 在 Cookie 被设置到用户设备上之前,必须先获得同意(即「先同意再加载」原则)
- 同意范围覆盖 Cookie、localStorage、sessionStorage 以及任何用于存储或访问设备信息的类似技术
- 仅「严格必要」的 Cookie 和用于「通信传输所必需」的 Cookie 可以豁免
CCPA/CPRA(美国加州)
加州消费者隐私法(CCPA)及其修正案 CPRA 采取的是「opt-out」模式而非「opt-in」,与 GDPR 的默认拒绝不同:
- 用户有权拒绝「出售或共享个人信息」,网站必须提供「Do Not Sell My Personal Information」链接
- 不要求在 Cookie 设置前获取预先同意,但必须在隐私政策中披露 Cookie 用途
- 2024 年起,CPRA 加强了对自动化决策和精准广告的限制
对于出海产品,如果你的用户群体同时覆盖欧盟和加州,最稳妥的做法是按 GDPR 的 opt-in 标准实现,然后额外满足 CCPA 的披露和 opt-out 要求。
实现方法
Cookie Consent 的实现有三条主要路径:使用第三方 Consent Management Platform(CMP)、自建同意组件,以及通过 Google Tag Manager + Consent Mode V2 进行间接管理。
方法一:使用 CMP(推荐大多数场景)
CMP 是目前最成熟且合规风险最低的方案。主流 CMP 工具包括:
| 工具 | 特点 | 适用场景 | 价格参考 |
|---|---|---|---|
| Cookiebot(Usercentrics 旗下) | 自动扫描网站 Cookie、支持 Google Consent Mode V2 | 中小型网站快速合规 | 免费版(≤50 页)、付费版起步约 €10/月 |
| OneTrust | 企业级全功能平台、支持 A/B 测试 | 大型企业、多品牌管理 | 企业定价,需联系销售 |
| CookieFirst | 多法规支持(GDPR/CCPA/LGPD)、界面友好 | 面向欧洲市场的中型站点 | 免费版(≤100 页)、付费版起步约 €22/月 |
| Osano | 开源友好、API 灵活 | 技术团队较强的中小团队 | 免费版可用、付费版起步约 $50/月 |
| Iubenda | 与隐私政策生成器集成 | 需要同时处理隐私政策和 Cookie 同意 | 免费版可用、付费版起步约 €29/年 |
| CookieScript | 轻量级、支持 Consent Mode V2 | 简单站点或博客 | 免费版(≤100 页)、付费版起步约 €8/月 |
典型的 CMP 接入流程:
1. 注册 CMP 账号 → 添加域名
2. CMP 扫描器自动识别网站上的第三方 Cookie 并分类
3. 在 CMP 后台配置横幅样式、Cookie 分类、同意文案
4. 将 CMP 提供的 JavaScript 嵌入网站 <head>
5. 为第三方脚本标记 Cookie 类别属性(如 data-cookieconsent="marketing")
6. 调试验证:确认未同意前无 Cookie 被写入
以 Cookiebot 为例,基本的接入代码如下:
<!-- 在 <head> 中引入 Cookiebot -->
<script
id="Cookiebot"
src="https://consent.cookiebot.com/uc.js"
data-cbid="你的-domain-key"
type="text/javascript">
</script>
<!-- 为第三方脚本标记类别 -->
<script
type="text/javascript"
data-cookieconsent="marketing">
// Google Ads 或其他营销脚本
</script>
<script
type="text/javascript"
data-cookieconsent="statistics">
// Google Analytics 或其他分析脚本
</script>方法二:自建同意组件
对于需要完全控制的项目,自建是可行的选择,但需要注意合规细节。核心实现逻辑:
// 1. 定义 Cookie 类别
type ConsentCategory = 'necessary' | 'functional' | 'analytics' | 'marketing'
interface ConsentState {
[key: string]: boolean
}
// 2. 同意状态存储(使用 localStorage)
const CONSENT_KEY = 'cookie-consent'
function getConsent(): ConsentState | null {
const raw = localStorage.getItem(CONSENT_KEY)
return raw ? JSON.parse(raw) : null
}
function saveConsent(state: ConsentState): void {
localStorage.setItem(CONSENT_KEY, JSON.stringify(state))
}
// 3. 页面加载时检查同意状态
function initialize(): void {
const consent = getConsent()
if (!consent) {
// 未同意 → 展示横幅,不加载任何非必要 Cookie
showConsentBanner()
return
}
// 已同意 → 按分类加载对应脚本
if (consent.analytics) loadAnalytics()
if (consent.marketing) loadMarketing()
}
// 4. 用户做出选择后保存并加载
function handleConsent(categories: ConsentState): void {
saveConsent(categories)
hideConsentBanner()
if (categories.analytics) loadAnalytics()
if (categories.marketing) loadMarketing()
}自建的注意事项:
- 必须在同意前阻止所有非必要 Cookie 的加载。如果只是展示一个横幅但不阻止脚本执行,这在 GDPR 下仍然不合规。
- 同意状态需要有明确的时间戳记录,便于审计。
- 用户撤回同意后,对应的 Cookie 必须被清除,而不只是停止新写入。
- 同意记录需要持久化,不能因为用户清除浏览器数据就丢失。
方法三:Google Tag Manager + Consent Mode V2
如果你的产品深度依赖 Google 生态(Analytics、Ads、Tag Manager),Consent Mode V2 是一个值得关注的技术层:
// 页面加载时设置默认同意状态为 denied
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
functionality_storage: 'granted', // 功能 Cookie 可默认允许
personalization_storage: 'denied',
security_storage: 'granted', // 安全 Cookie 可默认允许
})
// 用户同意 analytics 后更新
gtag('consent', 'update', {
analytics_storage: 'granted',
})Consent Mode V2 的核心价值在于:它让 Google 标签在用户拒绝同意时仍然可以发送匿名化信号(如转化数据),而不会直接写入 Cookie。这在合规的同时保留了一定的数据可见性。但需要注意的是,Consent Mode V2 是技术适配层,它不能替代 CMP 或同意横幅本身。
最佳实践
根据英国 ICO(Information Commissioner's Office)2025 年更新的指南和行业实践,合规的 Cookie Consent 应该遵循以下原则:
设计原则
| 实践要点 | 说明 | 常见错误 |
|---|---|---|
| 接受与拒绝同等显眼 | 两个按钮的视觉权重必须一致 | 拒绝按钮用灰色小字或藏在二级菜单 |
| 清晰无歧义的文案 | 明确说明每种 Cookie 的用途 | 使用「我们重视您的隐私」等模糊表述 |
| 分类粒度控制 | 按类型提供独立开关 | 只提供「全部接受」和「全部拒绝」两个选项 |
| 主动同意 | 用户必须做出积极操作 | 滚动页面或继续浏览即视为同意 |
| 便捷的撤回入口 | 随时可以重新打开设置面板 | 同意后就无法再找到 Cookie 设置入口 |
技术实践
- 先同意再加载(Prior Consent):非必要 Cookie 必须在获得同意后才能设置到用户设备上。这是 ePrivacy 指令的核心要求,也是最容易被违反的规则。
- 同意记录持久化:保存用户同意的版本、时间戳和具体选择的类别,用于合规审计。
- Cookie 扫描定期执行:网站的第三方依赖会变化,CMP 通常支持定期自动扫描。
- 多语言适配:如果网站有多种语言版本,Cookie 横幅和同意文案也需要对应多语言。
- 性能考量:Cookie 横幅不应该阻塞首屏渲染。将横幅组件延迟加载,避免影响 Core Web Vitals。
- 移动端适配:合规要求同样适用于移动端 Web 和 App。确保横幅在小屏幕上的交互体验完整。
Google Consent Mode V2 适配
从 2024 年 3 月起,Google 开始对欧盟地区的广告主强制执行 Consent Mode V2。如果你的产品使用 Google Ads 或 Google Analytics,需要确保:
- 默认同意状态中
ad_storage、ad_user_data、ad_personalization均设为denied - 用户同意后再更新为
granted - 使用 CMP 集成 Consent Mode V2,而不是手动管理
案例分析
案例一:SaaS 产品的 Cookie 合规整改
一个面向欧洲市场的 B2B SaaS 产品在上线初期使用了简单的「继续使用即同意」横幅。整改前的状态:
- 页面加载时即设置了 Google Analytics 和 Mixpanel 的分析 Cookie
- 横幅只有「接受」按钮,没有拒绝选项
- 没有按类别提供细粒度控制
- 同意状态没有版本记录
整改方案:
- 引入 Cookiebot CMP,自动扫描识别了 14 个第三方 Cookie
- 按类别分组:必要(3 个)、功能(2 个)、分析(5 个)、营销(4 个)
- 实现先同意再加载:将 Google Analytics 和 Mixpanel 的初始化脚本标记为
data-cookieconsent="statistics" - 重设横幅 UI:接受和拒绝按钮视觉权重一致,增加「管理偏好」入口
- 添加同意记录:保存每次同意的时间戳和类别选择
整改后三个月内,分析类 Cookie 的同意率约为 62%,营销类约 38%。虽然分析数据的覆盖量下降,但收集到的数据质量更高(因为用户是主动同意的),同时完全消除了 GDPR 合规风险。
案例二:电商独立站的 Consent Mode V2 集成
一个 Shopify 独立站同时服务北美和欧洲用户,面临双重合规压力:CCPA(加州)和 GDPR(欧盟)。
实施方案:
用户请求 → 判断地区
├── 欧盟用户 → 展示 opt-in 横幅(GDPR 标准)
├── 加州用户 → 展示 Do Not Sell 链接 + opt-out 提示(CCPA 标准)
└── 其他地区 → 展示信息性横幅
技术细节:
- 使用 CookieFirst CMP 作为统一同意管理层
- 通过 Google Tag Manager 集成 Consent Mode V2
- Shopify 端通过
customer_privacyAPI 同步同意状态 - 在 GTM 中按同意状态控制标签触发:
analytics_storage为denied时,GA4 标签不触发 - 加州用户的「Do Not Sell My Personal Information」链接放在页脚,点击后直接设置
ad_storage: denied
这个方案的关键在于用一套 CMP 管理多地区合规,通过地区判断展示不同的同意界面,同时用 Consent Mode V2 确保 Google 生态的标签行为与同意状态同步。
Cookie Consent 实现流程
合规检查清单
以下清单覆盖了 Cookie Consent 合规的核心检查项,可作为产品上线前的自查依据:
| 序号 | 检查项 | 说明 |
|---|---|---|
| 1 | 非必要 Cookie 在同意前是否被阻止加载 | 检查页面加载时是否有 Cookie 在横幅出现前就被写入 |
| 2 | 横幅是否同时提供「接受」和「拒绝」按钮 | 两个按钮的视觉权重必须一致 |
| 3 | Cookie 是否按类别分组展示 | 至少区分:必要、功能、分析、营销 |
| 4 | 每个 Cookie 类别是否有清晰的用途说明 | 用户能理解每个类别收集什么数据、用于什么目的 |
| 5 | 是否存在预勾选的复选框 | 除了「严格必要」外,所有类别默认必须为未勾选 |
| 6 | 用户是否可以在同意后随时撤回或修改偏好 | 提供持久可访问的 Cookie 设置入口 |
| 7 | 撤回同意后对应 Cookie 是否被清除 | 不只是停止新写入,已有的也要清除 |
| 8 | 同意记录是否持久化保存 | 包含时间戳、版本号、选择的类别 |
| 9 | Cookie 横幅文案是否与实际使用的 Cookie 一致 | 定期扫描,防止新增第三方依赖未被分类 |
| 10 | 移动端和桌面端的横幅交互是否都正常 | 小屏幕上按钮不能重叠或截断 |
| 11 | 多语言版本的横幅是否都有对应翻译 | Cookie 说明文案需要本地化 |
| 12 | Google Consent Mode V2 是否正确集成 | 默认状态为 denied,同意后才更新 |
| 13 | 隐私政策中是否披露了 Cookie 的使用情况 | 与 Cookie 横幅的分类和说明保持一致 |
| 14 | 同意横幅是否影响页面性能 | 横幅组件不应阻塞首屏渲染 |
参考资料
-
GDPR.eu — Cookies, the GDPR, and the ePrivacy Directive https://gdpr.eu/cookies/
-
UK ICO — Cookies and similar technologies(2025 更新版) https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guide-to-pecr/cookies-and-similar-technologies/
-
InsidePrivacy — EU Supervisory Authorities Publish New Guidance on Cookies(2024 年 1 月) https://www.insideprivacy.com/eu-data-protection/eu-supervisory-authorities-publish-new-guidance-on-cookies/
-
Cookiebot — GDPR cookies, consent, and compliance https://www.cookiebot.com/en/gdpr-cookies/
-
Google Developers — 在网站上设置意见征求模式(Consent Mode) https://developers.google.com/tag-platform/security/guides/consent?hl=zh-cn
-
Cookie Information — How to design a user-friendly and compliant cookie banner in 2026 https://cookieinformation.com/blog/designing-compliant-cookie-banners/
-
Cytrio — Building a GDPR and CCPA-Compliant Cookie Banner https://cytrio.com/building-a-gdpr-and-ccpa-compliant-cookie-banner-best-practices-for-2025/
-
Enzuzo — Best Consent Management Platforms (2026): 9 CMPs Compared https://www.enzuzo.com/blog/best-consent-management-platforms
-
Userconsent — Mastering Cookie Consent: 5 best practices for 2025 https://userconsent.eu/articles/mastering-cookie-consent-5-best-practices-for-2025/