Transisi dari cookie yang tidak dipartisi ke cookie yang dipartisi

Saat mengalihkan situs Anda ke cookie yang dipartisi, Anda mungkin menemukan perilaku yang tidak terduga jika cookie yang dipartisi dan tidak dipartisi dengan nama yang sama ada untuk klien tertentu.

Menetapkan cookie yang dipartisi tidak akan mengganti atau mengganti cookie tidak dipartisi yang ada dengan nama yang sama. Keduanya akan ada, selama cookie pihak ketiga diaktifkan, tetapi dalam stoples cookie yang terpisah. Saat cookie pihak ketiga dinonaktifkan, hanya cookie yang dipartisi yang akan diterima. Jika kedua cookie ada, secara terprogram tidak mungkin mengetahui mana yang dipartisi dan yang tidak, dan hal ini dapat menyebabkan perilaku yang tidak terduga.

Ada dua opsi untuk mengatasi hal ini: 1. Kedaluwarsa cookie yang Anda ganti 2. Mengganti nama cookie

Pertimbangan utama

Saat Anda beralih ke cookie yang dipartisi, perhatikan hal berikut:

  1. Tidak ada cara untuk menentukan secara terprogram apakah cookie dipartisi atau tidak dipartisi. Namun, Anda dapat menentukan status terpartisi cookie di Chrome DevTools.
  2. Cookie yang dipartisi tidak menimpa cookie yang tidak dipartisi—dua cookie yang sama persis (yaitu, memiliki atribut yang sama seperti nama, domain, atau jalur) akan diperlakukan sebagai cookie terpisah jika hanya satu cookie yang memiliki atribut Partitioned.
  3. Sebaiknya hindari situasi saat Anda memiliki cookie yang dipartisi dan cookie yang tidak dipartisi dengan nama yang sama yang ditampilkan dalam panggilan jaringan yang sama.

Berakhirnya cookie yang Anda ganti

Jika situs atau layanan tidak dapat mengakomodasi perubahan nama, Anda dapat membuat cookie berpartisi baru saat masa berlaku cookie tidak terpartisi yang sudah ada habis. Meskipun tidak ada cara untuk menentukan apakah cookie dipartisi atau tidak, header Set-Cookie tanpa atribut Partitioned tidak akan memengaruhi cookie yang tidak dipartisi.

Contoh berikut menunjukkan cara mengakhiri masa berlaku cookie tanpa partisi yang disebut example dan membiarkan cookie yang dipartisi tidak terpengaruh, meskipun nama tersebut sama. Cookie terpartisi baru yang disebut cookieName akan ditambahkan atau diperbarui jika sudah ada.

Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

Mengganti nama cookie

Cara paling efektif untuk memastikan transisi yang lancar adalah dengan menggunakan nama yang berbeda untuk cookie yang dipartisi dan tidak dipartisi. Misalnya, jika Anda memiliki cookie tidak dipartisi dengan nama "example", Anda dapat memigrasikannya ke cookie yang dipartisi.

Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned

Karena masa berlaku cookie tidak terekspos secara terprogram, tidak ada cara untuk menetapkan masa berlaku cookie baru agar bertepatan dengan masa berlaku cookie yang tidak dipartisi. Memperbarui nilai cookie selama proses ini mungkin lebih pragmatis.

Mempertahankan cookie yang dipartisi dan tidak dipartisi

Selama periode transisi, sebaiknya pertahankan dua cookie terpisah yang disinkronkan: satu yang dipartisi dan satu yang tidak. Misalnya, Anda mungkin memiliki cookie auth dan auth-partitioned, yang cookie-nya ditetapkan dengan atribut Partitioned.

Setiap kali nilai diperbarui, Anda harus mencoba menetapkan kedua cookie.

  • Pada klien yang memblokir cookie pihak ketiga, tetapi belum mendukung CHIPS: tidak ada cookie yang akan diterima.
  • Pada klien yang memblokir cookie pihak ketiga dan mendukung CHIPS: cookie auth akan ditolak, tetapi cookie auth-partitioned akan diterima.
  • Pada klien yang tidak memblokir cookie pihak ketiga, terlepas dari apakah cookie mendukung CHIPS atau tidak: auth dan auth-partitioned diterima.

Jika aplikasi Anda perlu membaca cookie autentikasi, Anda harus mencari auth-partitioned terlebih dahulu. Namun, jika harus me-roll back perubahan untuk sementara, Anda dapat kembali mencari cookie auth.

Setelah Anda memastikan bahwa cookie sebagian besar pengguna telah diperbarui, cookie auth-partitioned dapat dihentikan dan Atribut berpartisi dapat ditambahkan ke cookie autentikasi reguler.