Cookie の Independent Partitioned State(CHIPS)オリジン トライアル

Chrome 100 以降では、CHIPS オリジン トライアルで Cookie を「パーティション分割」ストレージにオプトインし、トップレベル サイトごとに Cookie jar を個別に使用できるようになりました。

変更回数

  • 2022 年 9 月: オリジン トライアルを Chrome 106 まで延長することに関する最新情報をご覧ください。
  • 2022 年 8 月: path=/ の要件を削除しました(github.com/privacycg/CHIPS/pull/49 をご覧ください)。
  • 2022 年 6 月: Chrome 104 以降、Partitioned 属性を使って Cookie を設定する際に Domain 属性を省略する必要がなくなりました。
  • 2022 年 5 月: Chrome 103 より、オリジン トライアルを有効にする際に Accept-CH: Sec-CH-Partitioned-Cookies ヘッダーを送信する必要がなくなりました。

CHIPS とは

Cookies Having Independent Partitioned State(CHIPS)は、デベロッパーが Cookie を「パーティション分割」ストレージにオプトインし、トップレベル サイトごとに個別の Cookie jar を設定できるようにするプライバシー サンドボックスの提案です。

パーティション分割されたサードパーティ Cookie は、最初に設定された最上位のサイトに関連付けられており、他の場所からはアクセスできません。目的は、サードパーティ サービスによる Cookie 設定を許可するが、最初に設定されたトップレベル サイトのコンテキスト内でのみ Cookie を読み取らせることです。

オリジン トライアルの対象

このトライアルは、埋め込みコンテンツのプロバイダが複数のサイトで新機能を試すことができるサードパーティのオリジン トライアルとして利用できます。

サイトをファーストパーティとして試用版に登録すると、そのサイト上のすべてのサードパーティ コンテンツ プロバイダも Cookie パーティショニングを利用できます。これらのサードパーティ プロバイダは、オリジン トライアルへの登録を示す追加の HTTP ヘッダーも受信する必要があります。

トライアルの実施期間はどのくらいですか?

トライアルは Chrome 100 から Chrome 105 までご利用いただけます。リリース予定日については、Chrome のリリース スケジュールをご確認ください。

オリジン トライアルへの登録方法

前提条件

Chrome Stable 103。

手順

  1. オリジン トライアルに登録してドメイン用のトークンを取得するには、CHIPS オリジン トライアルのページにアクセスしてください。

  2. Partitioned を含む Set-Cookie ヘッダーを使用するすべてのレスポンスに、有効なトークンを含む 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

サイトがこの Client Hints を使用せずに 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. DevTools を開いて [Application] > [Cookies] > [yourSite] に移動し、DevTools で [Partition Key] 列を探します。

補足情報

Cookie の要件

  • パーティション化された Cookie は Secure で設定する必要があります。(Path=/ は不要になりました。github.com/privacycg/CHIPS/pull/49 をご覧ください)。
  • SameParty 属性は Partitioned. と併用できません

Chrome では、Cookie のパーティショニングが有効か無効かにかかわらず、Partitioned 属性で設定された Cookie にこれらのルールが適用されます。正しく設定されていない Cookie は拒否されます。

Cookie のパーティショニングが無効になっていても、Cookie が正しい属性で設定されている場合、Chrome は Partitioned 属性を無視します。生成された Cookie は、設定された場所とは異なるトップレベル サイトのホストへのリクエストで引き続き送信されます。

Cookie パーティショニングをサポートしていないブラウザでも、サードパーティのコンテキストで Cookie を送信できるように、パーティション化された Cookie には SameSite=None 属性も含める必要があります。

JavaScript と Service Worker

オリジン トライアルにオプトインしたフレームは、document.cookie や CookieStore API などの JavaScript API を使用して、パーティション分割された Cookie の読み取りと書き込みを行えます。トライアルのスクリプトに含まれていないフレームでは、パーティション化された Cookie の読み取りと書き込みはできません。

Service Worker では、CHIPS オリジン トライアルはサポートされていません。

対応してフィードバックを共有する