通过试用第三方 Cookie 来申请延长迁移时间

为方便测试,Chrome 已默认为 1% 的 Chrome 用户限制第三方 Cookie。Chrome 计划从 2025 年初开始将第三方 Cookie 限制扩展到所有用户,但需要解决英国竞争和市场管理局 (CMA) 存在的所有竞争问题。为了更轻松地完成弃用流程,我们提供了第三方弃用试用,让嵌入式网站和服务可以申请更多时间,以便从第三方 Cookie 依赖项中迁离非广告用例。

此弃用试用的注册已于 2023 年 12 月 4 日当周开始。弃用试用本身将于 2024 年 1 月开始,并于 2024 年 12 月 27 日结束。开发者应在试用结束日期之前进行必要的更改和计划。

我们了解,从弃用试用注册开始到 Chrome 协助测试期间开始屏蔽 1% 的 Cookie 之间有短暂的时间。为了解决这些时间限制,Chrome 为参与该计划的来源在开发弃用试用令牌期间提供了宽限期。在宽限期(一直到 2024 年 6 月 30 日)内,为参与弃用试用而注册的源站将可以在 Chrome 中访问第三方 Cookie,即使它们尚未部署其令牌也是如此。此宽限期的目的是防止过渡阶段出现 Web 兼容性问题。参与计划的源必须在宽限期结束之前部署弃用试用令牌。

弃用试用

弃用试用是 Chrome 提供的一个标准选项,可让网站注册更多时间,以便从即将移除的旧版功能中迁出。弃用试用是一种源试用,可暂时重新启用某项功能。

此试用方案适用于可设置第三方 Cookie 且符合下一部分中列出的资格条件的嵌入和服务。换言之,如果您的嵌入内容或服务是第三方,那么您可以注册弃用试用,以便在包含您的嵌入内容或服务的所有环境中暂时重新启用您的第三方 Cookie。此试用仅适用于已注册的嵌入源,而非用户访问的整个顶级网站网域。

一个第三方/跨网站 iframe 示例,其中显示了 https://top.example 上的 https://embed.example/iframe.html 中的嵌入式网页,以及 https://top.example 上包含的来自 https://third-party.example/script.js 的脚本的 third-party/cross-site 脚本示例

如果顶级网站使用依赖 Cookie 的第三方,则需要注册参与此弃用试用。您应审核自己网站中使用的第三方 Cookie,并与第三方提供商联系,确保他们为弃用做好准备。

资格条件和审核流程

此弃用试用与之前的试用不同,引入了审核和批准参与流程。这是为了在更好地保护网络上用户的隐私的同时,仍然启用用户所依赖的服务来要求额外的时间进行迁移(如有必要)两者之间的平衡。

此弃用试用的指导原则如下:

  • 保留用户关键功能:此弃用试用适用于证明用户体验历程发生功能中断的第三方提供商。
  • 限制用户跟踪:弃用试用计划的目的并不在于支持出于广告目的进行跨网站跟踪,因此用于广告的第三方嵌入和服务不符合要求。

不符合广告用例资格还有助于确保弃用试用不会干扰根据竞争和市场管理局所述计划于 2024 年初进行的行业测试。这包括也用于非广告目的的广告相关网域。

Chrome 最初将与互联网隐私保护领域的行业领导者 Disconnect.me 合作,并实现 Disconnect 的跟踪器保护列表以识别归类为广告类别的脚本和网域。 其他浏览器已出于类似目的在网络上使用了取消关联功能。

我们将对注册请求应用以下流程:

  • 如果第三方来源与已知的广告网域匹配(包括来源与断开连接广告列表中的条目匹配),则注册请求将被拒绝。通常,列表中的条目将与指定来源下的所有子网域匹配。但是,有些条目包含路径元素。这些更具体的条目将与给定的来源匹配,但不匹配子网域。
  • 必须提供可重现面向用户的糟糕体验的步骤。具体而言,这应该是为操作存储 Cookie 的设备的用户提供的体验,而不是为之后执行数据分析的用户提供的体验。如果我们无法验证糟糕的用户体验,注册请求将会被拒绝
  • 否则,注册请求将会获得批准
  • 如果您声明来源与之前获批的申请“类似”,请提供来源之间的关系说明。

如果注册来源认为更多信息可以澄清审核决定,我们计划提供申诉流程。注册者可以通过在源试用控制台中重新申请来提出申诉。提出申诉的目的在于,针对因缺少要求的信息(已知的损坏 bug 和/或损坏重现步骤)和/或注册来源认为更多信息可以满足这些要求来阐明审核结果的要求而遭拒的请求。

我们还将批准反滥用和防欺诈用例,在这些用例中我们可以找到确凿的证据。欢迎就如何更好地评估这些用例提出反馈

申请弃用试用

添加再现步骤,以便我们的团队验证功能故障。或者,如果您的功能更简单,并且/或者您的功能受登录限制或类似限制,您可以使用 Chrome 开发者工具记录器提供重现问题的步骤记录的链接。

  1. 前往试用第三方 Cookie 弃用,然后点击“注册”。
  2. 对于“网站来源”,请提供用于提供嵌入页面或脚本的来源。
  3. “第三方匹配”选项将取决于您提供令牌的方式。添加试验令牌中更详细地介绍了这些选项。
    • 如果您要在自己的嵌入式网页上的 HTTP 标头或元标记中提供令牌,请不要选中“第三方匹配”。
    • 如果您使用 JavaScript 将令牌注入其他网站,则必须选中“第三方匹配”。
    • 如果您需要同时完成这两项操作,则需要单独注册。
  4. 如果您将跨网站内容托管在多个子网域中,请选中“我需要一个令牌来匹配源的所有子网域”选项。
    • 选择此选项后,提供的令牌将与注册的网域及其下方的网域匹配。例如:注册 https://example.com 以匹配 example.comwww.example.comfoo.example.combar.foo.example.com。如果您注册了 https://www.example.com,您的令牌将与 www.example.comfoo.www.example.com 匹配,但不会匹配 foo.example.com
    • 与通配符匹配类似,令牌将匹配多个子网域,例如 *.<domain>。为 example.com 请求令牌,该令牌可通过 a.example.comb.example.com 提供。系统仍会仅针对提供令牌的特定来源(而非所有子网域)重新启用第三方 Cookie 访问权限。请参阅启用子网域匹配后会启用哪些 Cookie?
    • 如果您在不在同一网域下的不同源站之间托管跨网站内容,则需要为每个源站单独注册。
  5. 勾选所有复选框,确认“披露和确认”中包含的所有条件。
  6. 提交请求。
  7. 我们需要您提供更多信息,才能处理您的要求。您将收到一封电子邮件通知,其中包含自动生成的工单,要求您提供以下信息:
    • 与您请求的来源关联的子网域数量
    • 您之前向 goo.gle/report-3pc-broken 报告的相关第三方破坏性代码库 bug 的 bug ID 或链接。
    • 您希望我们考虑的有关故障/用例的任何其他信息/背景信息。(如要针对申请遭拒的试用请求提出申诉,请说明您的来源为何/如何满足此试验列出的标准)。

提交后,我们会审核您的请求,并在审核完成或需要更多信息时通知您,以及您的请求是获得了批准还是被拒绝。您还将收到结果的状态和理由。如果获得批准,您可以继续根据需要提供试用令牌。 如果请求被拒,您可以按照请求工单中的指南操作。

设置用于测试的标志

目前,我们建议您设置以下标志(可在 Chrome 123 中使用),以便进行有效测试。这种标志设置组合有助于重现模式 B 的用户体验。

  • chrome://flags/#third-party-cookie-deprecation-trialenabled
    这是默认值。允许参与试用。

  • chrome://flags/#tracking-protection-3pcdenabled
    开启跟踪保护:在地址栏中显示眼睛图标界面,以便用户为网站暂时启用第三方 Cookie,并提供 chrome://settings/trackingProtection 而非 chrome://settings/cookies。

  • chrome://flags/#tpcd-metadata-grantsdisabled
    让 Chrome 像宽限期未生效一样运行。这可用于在宽限期结束之前(对于处于宽限期的网站)检查您的网站是否已正确部署弃用试用令牌。

  • chrome://flags/#tpcd-heuristics-grantsdisabled
    不允许基于启发法的缓解措施。这对于测试是否其他长期修复(不使用第三方 Cookie)在没有启发法缓解措施的情况下按预期运行,以及参与弃用试用是否按预期运行非常有用。

如果您需要手动测试宽限期是否按预期正常工作,在测试部署之前需要enable chrome://flags/#tpcd-metadata-grants,而不是停用。

添加试用令牌

如需了解详情,请参阅源试用使用入门第三方源试用排查 Chrome 源试用问题

您应该在要在跨网站上下文中设置或发送 Cookie 的所有页面响应中添加试用令牌。

在 HTTP 标头中提供令牌

如果您需要为嵌入跨网站 iframe 中的网页重新启用第三方 Cookie,可以在网页响应中添加 Origin-Trial HTTP 标头:

Origin-Trial: TOKEN_GOES_HERE

这相当于在弃用试用注册时不启用“第三方匹配”,因为您在自己的响应中提供令牌。

该网页响应可以设置 Cookie。对同一来源(例如该网页中的子资源或该网页的导航)的后续请求将包含该网站的跨网站 Cookie,还可能会设置 Cookie。

重复页面响应中提供的令牌的示意图。

如果您需要在会话中对源站的第一个请求发出跨网站 Cookie,还可以使用 Critical-Origin-Trial 标头传递试验名称:

Critical-Origin-Trial: Tpcd

这会导致浏览器在启用第三方 Cookie 的情况下重试请求。

弃用试用会作为持续的试用提供,这意味着浏览器收到令牌后,试用行为将一直运行,直到 iframe 加载完毕且不存在试用令牌为止。建议您在每次加载 iframe 时一致地发送试用令牌。

在元标记中提供令牌

在网页中,您可以在文档 <head> 中使用元标记:

<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">

元标记将为后续请求或网页中的 JavaScript 启用跨网站 Cookie,但如果您需要在初始请求中发送现有 Cookie,则需要使用 HTTP 标头。

使用 JavaScript 注入令牌

如果您需要在处理您自己的网页请求之前或不该为来源启用第三方 Cookie(例如,跨网站图片请求需要使用 Cookie,或者您打算创建使用 JavaScript 的 iframe),则可以使用 JavaScript 将令牌注入顶级网站:

const otMeta = document.createElement('meta');
otMeta.httpEquiv = 'origin-trial';
otMeta.content = 'TOKEN_GOES_HERE';
document.head.append(otMeta);

如需允许这一点,您必须在弃用试用注册中启用“第三方匹配”,因为要将源(第三方)的令牌注入其他网站。

启用了第三方匹配的令牌可以注入到任何源(包括您自己的源)中,并且该令牌将正常运行。

反复演示第三方脚本在父页面中注入令牌的示意图。

如果在加载 iframe 时没有试用令牌,则仍会停用永久试用。您必须始终在加载的所有 iframe 上提供试用令牌,即使最初是通过第三方脚本加载启用试用的。

验证您的令牌

打开 Chrome 开发者工具,选择“Application”面板,然后展开“Frames”标签页。 如果已提供任何令牌,选择任何帧都会显示“源试用”部分。如果您要将令牌注入顶级网站,则会在“top”条目中看到它。否则,您应选择与嵌入式页面对应的框架。

在“源试用”部分,如果您已提供令牌,则会看到“Tpcd”条目。如果此操作已成功启用该功能,您会看到绿色的“已启用”状态。否则,您将看到红色错误状态,您可以展开该条目以查看问题。

只需一个有效令牌即可激活弃用试用。如果您同时注册了第一方匹配和第三方匹配,在网页中同时提供这两个令牌不会出现问题。例如,如果您的单个页面可能以不同方式嵌入,则无需动态选择令牌:您可以同时提供两个令牌,并且将在任一上下文中启用试验。

会启用哪些 Cookie?

弃用试用仅会为针对试用注册的来源启用第三方 Cookie。启用后,第三方 Cookie 将显示在发送到相应来源的 iframe 和子资源请求中。第三方 Cookie 也可通过该来源的 iframe 中的 document.cookie 使用。

此处不考虑 Cookie Domain 属性。系统将仅考虑请求网址来源。一旦某个请求被确定包含第三方 Cookie,那么所有此类 Cookie 都将照常附加,即使 Cookie 所在的网域更为宽松也是如此。

例如,如果注册了 https://one.test.example,并且其令牌在 https://one.test.example iframe 中提供:

  • https://one.test.example/image.jpg 将接收 https://one.test.example 设置的 Cookie
  • https://one.test.example/image.jpg 将通过 Domain=.test.example 接收从其他来源设置的 Cookie
  • https://test.example/image.jpghttps://two.test.example/image.jpg 请求将不会接收第三方 Cookie,因为它们并非同源。

启用子网域匹配后会启用哪些 Cookie?

“匹配所有子网域”选项允许对注册源或具有更具体的子网域的任何源使用单个令牌。具有子网域匹配的 https://test.example 令牌可用于通过 https://test.examplehttps://one.test.examplehttps//two.test.example iframe 和第三方脚本加载来激活试用。

此外,如果启用了子网域匹配,第三方 Cookie 也可用于请求和与相应子网域关联的 iframe。例如,如果 https://test.example 使用子网域匹配,则 https://cdn.one.test.example/image.jpg 等子资源请求将收到第三方 Cookie。

停用试用时,不会考虑子网域匹配。如需停用试用版,必须在不使用令牌的情况下加载与注册中的来源完全匹配的 iframe。因此,只有没有令牌的 https://test.example iframe 才能停用针对子网域匹配的 https://test.example 注册。这种情况可能会在将来发生变化,因此我们建议您在启用试验时在所有子帧 iframe 上提供令牌,并在希望停用试验时从所有 iframe 中移除令牌。

试用令牌问题排查

Chrome 源试用问题排查提供了一个全面的核对清单,帮助您调试试用令牌注册和部署。

使用此试用方案时,您可能会遇到以下常见问题:

  • 如果选中“我需要一个令牌来匹配源的所有子网域。”选项,所提供的令牌将与注册的网域及其下方的网域匹配。例如:注册 https://example.com 以匹配 example.comwww.example.comfoo.example.combar.foo.example.com。如果您注册了 https://www.example.com,您的令牌将与 www.example.comfoo.www.example.com 匹配,但不会匹配 foo.example.com
  • 您网站中嵌入的第三方网站或服务需要自行注册试用。请勿申请并非由您控制/拥有的网域。
  • 如果您的源试用注册有误,则必须重新注册,才能更正错误并获取新令牌。

常见问题解答

  1. 如果我对 Disconnect.me 列表有疑问,该怎么办?
  2. 如果我的网域同时用于广告和非广告目的,我可以注册弃用试用吗?
    • 出于本博客前面介绍的原因,第三方嵌入内容和用于广告用途的服务不符合弃用试用的条件。这包括也用于非广告目的的广告相关网域。如需了解详情,请参阅资格条件和审核流程部分。
  3. 网站能否看到他们的哪些合作伙伴已注册弃用试用?他们能否限制其合作伙伴注册的注册?
    • 可以,网站可以通过查看 Chrome 开发者工具应用面板中的令牌信息,了解哪些嵌入和服务依赖于弃用试用令牌。如需了解详情,请参阅排查 Chrome 源试用问题
    • 顶级网站无法限制其合作伙伴或其网页上的嵌入式内容与服务的注册。如果需要,请与合作伙伴联系。
  4. 此试用与其他试用(例如用户代理还原源试用)有何不同?
    • 此弃用试用的主要不同之处在于,新的注册流程涉及满足参与条件以及源试用控制台中的新界面和页面。
    • 第二个不同之处是,它专门用于第三方嵌入式网站,以解决大量网站/服务客户端中最大量的 Web 兼容性问题。
  5. 是否会有针对第三方 Cookie 弃用的第一方弃用试用,顶级网站可注册试用以针对整个网站启用第三方 Cookie?
  6. 弃用试用申请的审核需要多长时间?在哪里可以查看我的申请状态?
    • 回复时间可能会有所不同;建议您尽快开始注册流程,以确保您在第一季度初弃用 1% 的第三方 Cookie 之前做好准备。如果您在提交注册后的 1-2 周内未收到任何回复,请发送电子邮件至 3pcd-deprecationtrial@google.com
    • 开放式对话、决策状态和理由的错误线程。
  7. 我们的弃用试用注册已获批准,并已按照建议部署了试用令牌。但是,弃用试用未按预期运行。我们该怎么做?