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