サイトをパーティション分割 Cookie に移行するときに、同じクライアントにパーティション分割された Cookie とパーティション分割されていない Cookie の両方が存在する場合、予期しない動作が発生することがあります。
パーティション化された Cookie を設定しても、同じ名前を持つ既存のパーティション分割されていない Cookie がオーバーライドまたは置換されることはありません。サードパーティ Cookie が有効になっている限り、どちらも別々の Cookie JAR に格納されます。サードパーティ Cookie を無効にすると、パーティション分割された Cookie のみが受け入れられます。両方の Cookie が存在する場合、どちらの Cookie がパーティション分割され、どれがパーティション分割されていないのかをプログラマティックに識別することは不可能であり、予期しない動作が発生する可能性があります。
これに対処するには次の 2 つの方法があります。 1. 置き換える Cookie を期限切れにします。 2. Cookie の名前を変更する
考慮すべきポイント
パーティション化された Cookie に移行する場合は、次の点に注意してください。
- Cookie がパーティション分割されているかどうかをプログラマティックに確認する方法はありません。Cookie のパーティション分割状態は Chrome DevTools で確認できます。
- パーティション化された Cookie によってパーティション分割されていない Cookie が上書きされることはありません。どちらか一方のみが
Partitioned
属性を持つ場合、まったく同じ(つまり、名前、ドメイン、パスなどの属性が同じ)2 つの Cookie は別々の Cookie として扱われます。 - 分割された Cookie と分割されていない Cookie の両方が同じネットワーク呼び出しで同じ名前の返されてしまう状況は避けることをおすすめします。
置き換えた Cookie を期限切れにする
サイトまたはサービスが名前の変更に対応できない場合は、既存のパーティション分割されていない Cookie を期限切れにしながら、新しいパーティション化された Cookie を作成できます。Cookie がパーティション分割されているかどうかを判断する方法はありませんが、Partitioned
属性のない Set-Cookie
ヘッダーはパーティション分割されていない Cookie には影響しません。
次の例では、example
というパーティション分割されていない Cookie を期限切れにし、パーティション化された Cookie の名前が同じであっても影響を受けない状態のままにする方法を示しています。cookieName
という新しいパーティション化された Cookie がすでに存在する場合は、追加または更新されます。
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Cookie の名前を変更する
シームレスな移行を確実に行う最も確実な方法は、分割された Cookie と分割されていない Cookie で異なる名前を使用することです。たとえば、「example」という名前のパーティション分割されていない Cookie がある場合は、パーティション分割された Cookie に移行できます。
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Cookie の有効期限はプログラムでは公開されないため、新しい Cookie の有効期限をパーティション分割されていない Cookie の有効期限と一致するように設定することはできません。このプロセス中に Cookie の値を更新することをおすすめします。
パーティション化された Cookie とパーティション分割されていない Cookie の両方を維持する
移行期間中は、2 つの別個の Cookie(パーティション分割された Cookie とパーティション分割されていない Cookie)を維持することを検討してください。たとえば、auth
と auth-partitioned
の両方の Cookie があり、後者は Partitioned
属性で設定されています。
値が更新されるたびに、両方の Cookie を設定する必要があります。
- サードパーティ Cookie をブロックしているが、まだ CHIPS をサポートしていないクライアントの場合: Cookie は受け入れられません。
- サードパーティ Cookie をブロックし、CHIPS をサポートするクライアントの場合:
auth
Cookie は拒否されますが、auth-partitioned
Cookie は受け入れられます。 - サードパーティ Cookie をブロックしないクライアントでは、CHIPS がサポートされているかどうかにかかわらず、
auth
とauth-partitioned
の両方を使用できます。
アプリケーションが認証 Cookie を読み取る必要がある場合は、まず auth-partitioned
を探す必要がありますが、変更を一時的にロールバックする必要がある場合は、フォールバックして auth
Cookie を探すことができます。
大部分のユーザーの Cookie が更新されたことを確認したら、auth-partitioned
Cookie を廃止し、通常の認証 Cookie に Partitioned 属性を追加できます。