从 Chrome 100 开始,CHIPS 源试用允许选择将 Cookie 纳入“分区”存储,并为每个顶级网站提供单独的 Cookie jar。
变更
- 2022 年 9 月:查看关于如何将源试用延长到 Chrome 106 的更新信息。
- 2022 年 6 月:从 Chrome 104 开始,使用
Partitioned
属性设置 Cookie 时不再需要省略Domain
属性。 - 2022 年 5 月:从 Chrome 103 开始,选择加入源试用不再需要发送
Accept-CH: Sec-CH-Partitioned-Cookies
标头。
什么是 CHIPS?
具有独立分区状态 (CHIPS) 的 Cookie 是一项 Privacy Sandbox 提案,可让开发者选择将 Cookie 加入“分区”存储,每个顶级网站分别使用单独的 Cookie JAR。
分区第三方 Cookie 与最初设置的顶级网站绑定,无法从其他位置访问。目的是允许第三方服务设置 Cookie,但只能在最初设置它们的顶级网站的上下文中读取。
源试用适用于哪些对象?
此试用版以第三方源试用的形式提供,可让嵌入式内容的提供商在多个网站上试用新功能。
如果某个网站以第一方身份注册参与试用,该网站上的任何第三方内容提供方也都可以使用 Cookie 分区功能。这些第三方提供商还会收到额外的 HTTP 标头,表明其已注册源试用。
试用会持续多长时间?
试用将从 Chrome 100 到 Chrome 105 开始。请查看 Chrome 发布时间表,了解预定的发布日期。
如何注册源试用
前提条件
Chrome 稳定版 103。
步骤
如需注册参加源试用并为您的网域获取令牌,请访问 CHIPS 源试用页面。
在包含
Partitioned
的Set-Cookie
标头的任何响应中,都添加带有有效令牌的Origin-Trial
标头:Origin-Trial: <ORIGIN TRIAL TOKEN>
您可以通过以下两种方式之一将
Partitioned
属性添加到 Cookie:在
Set-Cookie
标头中:Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;
在 JavaScript 中:
cookieStore.set({ name: '__Host-name', value: 'value', secure: true, path: '/', sameSite: 'none', // Set a partitioned cookie using the attribute below. partitioned: true, });
示例
参与源试用的网站应在响应中包含以下标头:
Origin-Trial: <ORIGIN TRIAL TOKEN>
Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;
验证它是否正常运行
检查标头
如果您已成功选择启用源试用并设置分区 Cookie,那么来自 Chrome 客户端的后续请求将会包含 Sec-CH-Partitioned-Cookies: ?0
请求标头,直到当前会话结束。
Sec-CH-Partitioned-Cookies: ?0
Cookie: __Host-name=value
如果您的网站在接收 Cookie 时没有收到此客户端提示,则表示选择加入源试用未成功,并且您接收的 Cookie 不会被分区。
不含带有 Partitioned
的 Set-Cookie
标头的响应不会影响网站的源试用参与状态。
如果您未在 Origin-Trial
标头中提供有效令牌,则机器上的分区 Cookie 将被转换为未分区的 Cookie。
如需了解详情,请参阅 chromium.org 上的 CHIPS 文档。
DevTools
- 请前往
chrome://flags/#partitioned-cookies
,将设置更改为“已启用”。 - 点击右下角的“重新启动”按钮或前往 chrome://restart,以重新启动 Chromium。
- 转到
chrome://settings/cookies
,确保将单选按钮设置为“允许所有 Cookie”或“在无痕模式下阻止第三方 Cookie”。 - 加载包含嵌入内容的网站。
- 打开开发者工具,转到 Application > Cookies > yourSite,然后在开发者工具中查找 分区键列。
其他详情
Cookie 要求
- 必须使用
Secure
和Path=/
设置分区 Cookie。 SameParty
属性不能与Partitioned.
一起使用
无论 Cookie 分区功能是处于启用还是停用状态,Chrome 都会对使用 Partitioned
属性设置的 Cookie 强制执行这些规则。设置不正确的 Cookie 将被拒绝。
如果 Cookie 分区功能已停用,但 Cookie 是设置了正确的属性,则 Chrome 会忽略 Partitioned
属性,而生成的 Cookie 仍会通过请求发送到其主机(位于不同于设置它的顶级网站上)上。
分区 Cookie 还应包含 SameSite=None
属性,以允许在不支持 Cookie 分区的浏览器中的第三方环境中发送 Cookie。
JavaScript 和 Service Worker
选择启用源试用的框架将可以通过 document.cookie
和 CookieStore API 等 JavaScript API 读取和写入分区 Cookie。试验脚本中未包含的框架将无法读取或写入分区 Cookie。
Service Worker 目前不支持 CHIPS 源试用。
互动和分享反馈
- 在 GitHub 上提出问题并关注讨论内容。
- 在 Privacy Sandbox 开发者支持代码库中提问并加入讨论。
- 探索提供 Privacy Sandbox 提案反馈的不同途径。