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:
- Tidak ada cara untuk menentukan secara terprogram apakah cookie dipartisi atau tidak dipartisi. Namun, Anda dapat menentukan status terpartisi cookie di Chrome DevTools.
- 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
. - 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 cookieauth-partitioned
akan diterima. - Pada klien yang tidak memblokir cookie pihak ketiga, terlepas dari apakah
cookie mendukung CHIPS atau tidak:
auth
danauth-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.