Cookie 具有獨立分區狀態 (CHIPS) 來源試用

自 Chrome 100 版起,CHIPS 來源試用可讓您選擇將 Cookie 設為「分區」儲存空間,並為每個頂層網站另外提供一個 Cookie Jar。

異動

  • 2022 年 9 月:請參閱這篇文章,瞭解如何將來源試用延長至 Chrome 106。
  • 2022 年 6 月:自 Chrome 104 起,使用 Partitioned 屬性設定 Cookie 時,不必再略過 Domain 屬性。
  • 2022 年 5 月:自 Chrome 103 起,選擇加入來源試用計畫時不再需要傳送 Accept-CH: Sec-CH-Partitioned-Cookies 標頭。

什麼是 CHIPS?

Cookie 具有獨立分區狀態 (CHIPS) 是一項 Privacy Sandbox 提案,可讓開發人員將 Cookie 選擇加入「分區」儲存空間,並為每個頂層網站提供獨立的 Cookie jar。

分區的第三方 Cookie 只會與頂層網站相關聯,且該網站最初設有 Cookie,無法從其他位置存取。目的是允許第三方服務設定 Cookie,但只能在頂層網站上讀取 Cookie 時所在的頂層網站。

來源試用的對象為何?

這是第三方來源試用的試用方案,可讓嵌入內容提供者在多個網站上試用新功能。

如果網站以第一方身分註冊試用,則該網站上的任何第三方內容供應者也可以使用 Cookie 分區功能。這些第三方供應商應該也會收到額外的 HTTP 標頭,指出其已在來源試用中註冊。

試用會持續多久?

這項試用方案將從 Chrome 100 至 Chrome 105 開放。如要瞭解預定發布日期,請參閱 Chrome 發布時間表

如何註冊來源試用

必要條件

Chrome 穩定版 103。

操作步驟

  1. 如要註冊來源試用並取得網域權杖,請前往 CHIPS 來源試用頁面

  2. 請在所有含有 Set-Cookie 標頭 (包含 Partitioned) 的回應中加入包含有效憑證的 Origin-Trial 標頭:

    Origin-Trial: <ORIGIN TRIAL TOKEN>
    
  3. 透過下列其中一種方式將 Partitioned 屬性新增至 Cookie:

    • Set-Cookie 標題中:

      Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;
      
    • 在 JavaScript 中:

      cookieStore.set({
      name: '__Host-name',
      value: 'value',
      secure: true,
      path: '/',
      sameSite: 'none',
      // Set a partitioned cookie using the attribute below.
      partitioned: true,
      });
      

範例

參與來源試用的網站應在回應中加入下列標頭:

Origin-Trial: <ORIGIN TRIAL TOKEN>
Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;

確認運作正常

檢查標頭

如果您已成功選擇加入來源試用並設定分區 Cookie,則 Chrome 用戶端後續發出的要求都會包含 Sec-CH-Partitioned-Cookies: ?0 要求標頭,直到目前的工作階段結束為止。

Sec-CH-Partitioned-Cookies: ?0
Cookie: __Host-name=value

如果您的網站收到 Cookie 但未提供這則用戶端提示,代表選擇參與來源試用失敗,且您所取得的 Cookie 不會分區。

如果回應不含含有 PartitionedSet-Cookie 標頭,則不會影響網站來源試用參與狀態。

如果您未在 Origin-Trial 標頭中以有效憑證回應,系統會將電腦上的分區 Cookie 轉換成非分區 Cookie。

詳情請參閱 chromium.org 的 CHIPS 說明文件

DevTools

  1. 請前往「chrome://flags/#partitioned-cookies」並將設定變更為「已啟用」。
  2. 按一下右下角的「重新啟動」按鈕,或前往 chrome://restart,重新啟動 Chromium。
  3. 請前往 chrome://settings/cookies,確認圓形按鈕已設為「允許所有 Cookie」或「在無痕模式中封鎖第三方 Cookie」。
  4. 載入含有嵌入內容的網站。
  5. 開啟開發人員工具,然後開啟「應用程式」 >「Cookie」 > 您的網站,然後在開發人員工具中找出「分區金鑰」欄。

其他詳細資料

Cookie 需求

  • 分區 Cookie 必須搭配 SecurePath=/ 設定。
  • SameParty 屬性無法與 Partitioned. 搭配使用

無論是否啟用或停用 Cookie 分區,Chrome 都會針對使用 Partitioned 屬性設定的 Cookie 強制執行這些規則。設定的 Cookie 會遭到拒絕。

如果停用 Cookie 分區功能,但 Cookie 所設定的屬性正確無誤,Chrome 會忽略 Partitioned 屬性,而產生的 Cookie 仍會透過要求,傳送至其位於不同頂層網站的主機,與設定的位置不同。

分區 Cookie 也應包含 SameSite=None 屬性,以便在不支援 Cookie 分區的瀏覽器中,在第三方內容中傳送 Cookie。

JavaScript 和服務 Worker

選擇加入來源試用的頁框可以存取透過 document.cookie 和 CookieStore API 等 JavaScript API 讀取及寫入分區 Cookie。不在試用指令碼中的頁框將無法讀取或寫入分區 Cookie。
Service Worker 目前不支援 CHIPS 來源試用。

交流及分享意見回饋