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
:嵌入内容无权访问未分区的 Cookieinactive
:嵌入内容有权访问未分区的 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。 | 否 |