具有独立分区状态 (CHIPS) 源试用的 Cookie

从 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。

步骤

  1. 如需注册参加源试用并为您的网域获取令牌,请访问 CHIPS 源试用页面

  2. 在包含 PartitionedSet-Cookie 标头的任何响应中,都添加带有有效令牌的 Origin-Trial 标头:

    Origin-Trial: <ORIGIN TRIAL TOKEN>
    
  3. 您可以通过以下两种方式之一将 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 不会被分区。

不含带有 PartitionedSet-Cookie 标头的响应不会影响网站的源试用参与状态。

如果您未在 Origin-Trial 标头中提供有效令牌,则机器上的分区 Cookie 将被转换为未分区的 Cookie。

如需了解详情,请参阅 chromium.org 上的 CHIPS 文档

DevTools

  1. 请前往 chrome://flags/#partitioned-cookies,将设置更改为“已启用”。
  2. 点击右下角的“重新启动”按钮或前往 chrome://restart,以重新启动 Chromium。
  3. 转到 chrome://settings/cookies,确保将单选按钮设置为“允许所有 Cookie”或“在无痕模式下阻止第三方 Cookie”。
  4. 加载包含嵌入内容的网站。
  5. 打开开发者工具,转到 Application > Cookies > yourSite,然后在开发者工具中查找 分区键列。

其他详情

Cookie 要求

  • 必须使用 SecurePath=/ 设置分区 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 源试用。

互动和分享反馈