Saat mentransisikan situs ke cookie yang dipartisi, Anda mungkin mengalami 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 menggantikan cookie yang sudah ada dan tidak dipartisi dengan nama yang sama. Keduanya akan ada, selama cookie pihak ketiga diaktifkan, tetapi dalam cookie jar terpisah. Jika cookie pihak ketiga dinonaktifkan, hanya cookie hasil partisi yang akan diterima. Jika kedua cookie tersebut ada, Anda tidak dapat secara terprogram mengetahui cookie mana yang dipartisi dan mana yang tidak, dan hal ini dapat menyebabkan perilaku yang tidak terduga.
Ada dua opsi untuk mengatasi hal ini: 1. Mengakhiri cookie yang diganti 2. Mengganti nama cookie
Pertimbangan utama
Saat Anda bertransisi ke cookie yang dipartisi, perhatikan hal-hal berikut:
- Tidak ada cara untuk menentukan secara terprogram apakah cookie yang dikirim dalam permintaan HTTP telah dipartisi atau tidak dipartisi. Namun, Anda dapat menentukan status partisi cookie di Chrome DevTools. Anda dapat membedakan antara cookie yang dipartisi dan tidak dipartisi yang tidak memiliki atribut
HttpOnly
dengan menggunakan CookieStore API. - 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 yang memiliki atribut
Partitioned
. - Sebaiknya hindari situasi di mana Anda memiliki cookie yang dipartisi dan cookie yang tidak dipartisi dengan nama yang sama ditampilkan dalam panggilan jaringan yang sama.
Akhiri cookie yang Anda ganti
Jika situs atau layanan Anda tidak dapat mengakomodasi perubahan nama, Anda dapat membuat cookie yang dipartisi baru sekaligus menghentikan cookie yang tidak dipartisi yang ada. Meskipun tidak ada cara untuk menentukan apakah cookie dipartisi atau tidak, header Set-Cookie
dengan atribut Partitioned
tidak akan memengaruhi cookie yang tidak dipartisi.
Contoh berikut menunjukkan cara menghentikan cookie yang tidak dipartisi yang disebut example
dan membiarkan cookie yang dipartisi tidak terpengaruh, meskipun memiliki nama yang sama. Cookie
yang dipartisi 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 andal untuk memastikan bahwa ada transisi yang lancar adalah dengan menggunakan nama yang berbeda untuk cookie yang dipartisi dan tidak dipartisi. Misalnya, jika Anda memiliki cookie yang tidak dipartisi bernama "contoh", Anda dapat memigrasikannya ke cookie yang dipartisi.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Karena masa berlaku cookie tidak diekspos secara terprogram, tidak ada cara untuk menetapkan masa berlaku cookie baru agar bertepatan dengan masa berlaku cookie yang tidak dipartisi. Sebaiknya perbarui nilai cookie selama proses ini.
Pertahankan cookie yang dipartisi dan tidak dipartisi
Selama periode transisi, pertimbangkan untuk mempertahankan dua cookie yang disinkronkan secara terpisah:
satu yang dipartisi dan satu yang tidak. Misalnya, Anda mungkin memiliki cookie
auth
dan auth-partitioned
, dengan cookie auth-partitioned
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
klien tersebut mendukung CHIPS:
auth
danauth-partitioned
diterima.
Saat aplikasi Anda perlu membaca cookie autentikasi, Anda harus mencari auth-partitioned
terlebih dahulu. Namun, jika Anda harus me-roll back perubahan untuk sementara, Anda dapat kembali untuk mencari cookie auth
.
Setelah Anda menetapkan bahwa sebagian besar pengguna telah memperbarui cookie mereka, cookie auth-partitioned
dapat dihentikan dan atribut yang dipartisi dapat ditambahkan ke cookie autentikasi reguler.