检测 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。此方法会返回 truefalse,具体取决于该帧是否有权访问未分区的 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。