Stories

Detail Return Return

第三方Cookie失效時的新解決方案 - Stories Detail

本文首發於我的博客 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 提案

Add a new Comments

Some HTML is okay.