为弃用第三方 Cookie 做好准备

本指南可帮助您了解 Chrome 停止支持第三方 Cookie 对插件的影响和必要更改。

概览

Chrome 于 2024 年 1 月 4 日推出了跟踪保护功能,默认情况下,仅允许 1% 的用户访问第三方 (3P) Cookie。2025 年初,Chrome 预计会彻底停用第三方 Cookie

Google 课堂插件至少会影响以下两个用户体验历程:

  1. Google 单点登录 (SSO) 流程
  2. 将用户启动到新标签页

Google 单点登录

在 Google SSO 流程中,系统会向用户显示一个对话框,让用户登录其 Google 帐号并同意数据共享。

从 iframe 内直观呈现单点登录期间的三种不同 Cookie 上下文

图 1. 在单点登录期间通过 iframe 直观呈现三种不同的 Cookie 上下文:(1) 顶级 Google 课堂应用,(2) 第三方嵌入式 iframe(本例中为 localhost 上的 DavidPuzzle),以及 (3) 顶级 OAuth 对话框。

在典型的插件实现中,会话 Cookie 会在此登录过程完成后设置。嵌入式上下文中的插件 iframe 已重新加载,现在带有会话 Cookie,允许用户访问其经过身份验证的会话。不过,停用第三方 Cookie 后,内嵌式上下文(如插件 iframe)中的网站就无法从各自的顶级上下文访问 Cookie。对于 Google 课堂插件,用户无法访问经过身份验证的会话,并卡在登录循环中。

对于在嵌入式 iframe 环境中设置会话 Cookie 的实现,可以使用 CHIPS API 来缓解此问题,该 API 允许嵌入式网站设置和访问分区 Cookie(嵌入器网域和嵌入式网域中的 Cookie 上)。不过,在登录对话框的顶级上下文中设置会话 Cookie 的实现无法访问 iframe 中的未分区 Cookie,从而阻止登录。

新的标签

出于类似原因,如果用户在插件 iframe 中拥有基于 Cookie 且经过身份验证的会话,并且 iframe 将用户启动到某个 activity 的新顶级标签页中,则顶级标签页无法从 iframe 访问分区会话 Cookie。这样可防止 iframe 会话状态在新标签页 activity 中保留,并且可能会强制用户在新标签页中重新登录。从设计上讲,CHIPS API 无法解决此问题;分区 iframe Cookie 在顶级上下文中无法访问。

开发者操作

您应考虑采取一些措施,确保您的插件在 Chrome 逐步淘汰第三方 Cookie 时仍能按预期运行。

  1. 审核在插件的关键用户历程中对第三方 Cookie 的使用情况。具体而言,请在停用第三方 Cookie 的情况下进行测试,以评估对您的特定实现的影响。
  2. 探索 Storage Access API。对于所有插件实现,我们建议您探索 Storage Access API (SAA)。SAA 使 iframe 能够在 iframe 上下文之外访问其 Cookie。目前,Chrome 中提供了 SAA 而且“课堂”应用也支持 SAA

  3. 选择加入 FedCM。此外,如果您使用 GIS(“使用 Google 帐号登录”库),Identity 团队的官方指南是选择加入 FedCM。这不会取代第三方 Cookie 功能,但最终在弃用第三方 Cookie 的过程中,GIS 中需要用到它。FedCM 目前已在 Chrome 中推出,且在 Google 课堂中也受支持,但其行为和功能仍处于开发阶段,并且欢迎提供反馈。

  4. 迁移到 GIS。如果您使用的是已废弃的 GSIv2 库(也称为 Google 登录库),强烈建议您迁移到 GIS,因为未来对 GSIv2 的支持尚不明确。

  5. 申请延迟弃用试用。Chrome 将提供弃用试用,以允许非广告用例延迟弃用第三方 Cookie 的影响。如果申请接受,您将获得一个令牌,您可以在插件中使用该令牌,以便在 2024 年前为您的源站启用第三方 Cookie,同时迁移到 SAA 等长期解决方案。应用后,系统会要求您提供 bug ID 或中断报告的链接。我们的团队已针对 Google 课堂插件提交此问题,您可以提供此 bug