1
头图

本文首发于我的博客 YILS's Blog,首发地址:第三方Cookie失效时的新解决方案 (yils.blog)

第三方 Cookie 一直是网络的重要组成部分,这已持续了 25 年。

然而随着浏览器对隐私保护的加强,为了防止跨站跟踪,第三方 Cookie 的使用变得越来越受限。即使你已经正确设置了 SameSite=None; Secure;,仍然可能会遇到 Set-Cookie 失效的问题。这通常是因为最新版本浏览器新的隐私设置或其他安全策略导致的。

为什么仍旧需要第三方cookie?

先考虑这个问题,你是不是真的需要使用它。

你可能遇到了以下情况:

  • 使用单点登录(SSO)
  • 第三方前端 SDK 需要使用 Cookie 来存储用户标识
  • iframe嵌入:通用的聊天、地图、文档等通过三方 Cookie 来共享状态,完成自动登录
  • CDN 缓存:一些 CDN 服务商使用 Cookie 来缓存用户特定的内容
  • 嵌入式第三方付款服务
  • 第三方静态资源加载
  • 跨站 API 调用

这些场景中,第三方 Cookie 仍然是不可或缺的。

新隐私策略限制下的解决方案

1. 使用具有独立分区状态 (CHIPS) 的 Cookie

这是 Chrome 的一个新特性,旨在允许第三方 Cookie 在跨站点上下文中使用,同时仍然提供隐私保护。

值得注意的是,从 Safari 18.4 版本(2025年3月31日发布)开始也全面支持 CHIPS

而 Firefox 宣布,他们会在 ETP 严格模式和无痕浏览模式下默认对所有第三方 Cookie 进行分区,因此所有跨站 Cookie 都会按顶级网站进行分区。

CHIPS-UnPartitioned演示图

CHIPS-Partitioned演示图

CHIPS 虽然允许了网站在跨站上下文中使用 Cookie,但这些 Cookie 只能在特定的分区中访问。

要启用 CHIPS,你只需在服务器端设置 Partitioned 属性:

Set-Cookie: __Host-name=value; Path=/; SameSite=None; Secure; Partitioned;

这将使 Cookie 在跨站点上下文中可用,虽然会受到分区的限制,但非常适用被动显示的嵌入服务、自动登录、文档权限控制、CDN 缓存等场景。

2. 使用 Storage Access API 请求用户授权存储 Cookie

Storage Access API 允许网站主动请求访问其在第三方上下文中的存储(包括 Cookie)。这对于需要在 iframe 中使用 Cookie 的场景非常有用。

要使用 Storage Access API,你可以在 iframe 嵌入的网页中调用 document.requestStorageAccess() 方法:

Storage Access API 演示图

if (document.requestStorageAccess) {
  document
    .requestStorageAccess()
    .then(() => {
      // 成功获取存储访问权限
      console.log("Storage access granted");
    })
    .catch(error => {
      // 用户拒绝或发生错误
      console.error("Storage access denied:", error);
    });
} else {
  console.warn("Storage Access API is not supported in this browser");
}

Storage Access API 目前已获得主流现代浏览器的广泛支持,包括 Safari、Firefox、Chrome、Edge 以及基于 Chromium 的其他浏览器。

注意,用户必须明确同意才能授予存储访问权限,因此这可能会影响用户体验。

这种方式适用于某些第三方嵌入内容需要访问未分区的 Cookie 或存储空间,才能为用户提供更好的体验情况。

例如,需要登录会话详细信息的嵌入式评论插件,嵌入式付款系统或视频网站等服务。

Storage Access API 规范 提供了更多详细信息。

3. RWS 与 FedCM

RWS(Related Website Set)是一种网络平台机制,允许网站声明它们之间的关系,从而使浏览器能够更好地管理跨站点 Cookie 的使用,并向用户显示这些信息。

而 FedCM(Federated Credential Management)则是一种联合身份认证服务方法,不依赖于第三方 Cookie 或导航重定向。

这两种技术都由谷歌提出,但是目前遭到其他两家浏览器厂商反对或未实现,而且已经超脱Cookie的范畴,所以这里不做详细介绍。

相关信息可以在这里查看:Related Website Sets 提案Federated Credential Management 提案


YILS_LIN
13 声望1 粉丝