检测 Chrome 中的第三方 Cookie 可用性

Chrome 提出了一种新体验,让用户能够在浏览时选择如何处理第三方 Cookie。网站和服务可能需要检测在给定情境中是否有第三方 Cookie。Chrome 有两种主要方法来检测对嵌入内容的第三方 Cookie 的访问权限:使用 hasStorageAccess JavaScript 方法和观察 Sec-Fetch-Storage-Access 标头。

Privacy Sandbox 引入了一些 API,这些 API 可能会在满足特定条件的情况下向特定框架授予对第三方 Cookie 的访问权限。因此,能够按嵌入方式检测对未分区的 Cookie 的访问非常重要。

检测对 iframe 中第三方 Cookie 的访问

如果 iframe 的内容托管在与用户地址栏中显示的网站不同的网站上,则会被视为跨网站内容,并且可能会受到第三方 Cookie 限制。iframe 可以通过调用 await document.hasStorageAccess() 来检测它当前是否有权访问第三方 Cookie。此方法会返回 true 或 false,具体取决于该帧是否有权访问未分区的 Cookie。

如果您的 iframe 使用 Storage Access API (SAA) 来访问未分区的跨网站 Cookie(单独使用 SAA 或与 Related Website Set 搭配使用),您可以检查 storage-access 权限,以确定该框架是否可以选择访问未分区的 Cookie。

检测 HTTP 请求中的第三方 Cookie 访问情况

从 Chrome 133 开始,系统会随凭据请求一起发送标头 Sec-Fetch-Storage-Access,以便服务器知道其调用上下文是否有权访问未分区的 Cookie。此标头包含以下三个值之一:

  • none:嵌入内容无权访问未分区的 Cookie
  • inactive:嵌入内容有权访问未分区的 Cookie,但尚未启用该权限
  • active:嵌入内容有权访问未分区的 Cookie

授予嵌入代码对未分区的 Cookie 的访问权限的条件

您可以通过多种方式授予对未分区的第三方 Cookie 的访问权限,以支持这些 Cookie 提供必要功能的情况。以下方法会导致授予对未分区的 Cookie 的访问权限。在某些情况下,必须先调用 requestStorageAccess() 或 requestStorageAccessFor(),然后才能授予访问权限。

方法 示例 必须调用 requestStorageAccess?
Storage Access API 提示 系统提示用户允许存储空间访问权限,用户选择“允许”。 是
Federated Credential Management 用户使用联合身份提供方 (IdP) 登录;IdP 的框架请求存储空间访问权限。 是
Related Website Set 嵌入内容和嵌入者属于同一 RWS。 是
在用户设置中启用了 3PC 用户选择为其所有浏览内容或仅为特定来源启用 3PC。 否
基于启发词语的例外情况 Chrome 会检测启发词语模式,并自动授予对未分区的 Cookie 的访问权限。无需调用 requestStorageAccess()。 否
临时例外情况 (例如宽限期) 该网站或服务已注册为 Chrome 临时例外情况,以便在过渡到更持久的解决方案。 否
企业政策 公司 Chrome 企业版管理员已选择允许对部分或全部流量使用 3PC。 否