Durante la transizione del tuo sito ai cookie suddivisi, potresti riscontrare un comportamento imprevisto se per un determinato client sono presenti sia un cookie suddiviso sia uno non suddiviso con gli stessi nomi.
L'impostazione di un cookie partizionato non sostituisce né sostituisce un cookie non partizionato esistente con lo stesso nome. Entrambi esisteranno, a condizione che i cookie di terze parti siano attivati, ma in cookie jar separati. Quando i cookie di terze parti sono disabilitati, verrà accettato solo quello partizionato. Se sono presenti entrambi i cookie, non è possibile stabilire in modo programmatico quale è partizionato e quale no, il che può portare a un comportamento imprevisto.
Esistono due possibili opzioni per risolvere questo problema: 1. Fai scadere il cookie che stai sostituendo. 2 Rinominare i cookie
Considerazioni principali
Durante la transizione ai cookie suddivisi, tieni presente quanto segue:
- Non è possibile determinare in modo programmatico se un cookie inviato in una richiesta HTTP è partizionato o non partizionato. Tuttavia, puoi determinare lo stato partizionato di un cookie in Chrome DevTools. Puoi distinguere tra cookie con stato partizionato e non partizionato che non hanno l'attributo
HttpOnly
utilizzando l'API CookieStore. - I cookie partizionati non sovrascrivono quelli non partizionati: due cookie
esattamente uguali (ossia, con attributi identici, come nome, dominio o percorso)
verranno trattati come cookie separati se solo uno ha l'attributo
Partitioned
. - È meglio evitare situazioni in cui nella stessa chiamata di rete vengano restituiti sia un cookie partizionato che un cookie non partizionato con lo stesso nome.
Scadenza dei cookie che stai sostituendo
Se il tuo sito o servizio non è in grado di supportare una modifica del nome, puoi creare un nuovo cookie partizionato mentre fai scadere il cookie non partizionato esistente. Sebbene
non sia possibile determinare se un cookie è partizionato o meno, le intestazioni Set-Cookie
con un attributo Partitioned
non influiscono sui cookie non partizionati.
L'esempio seguente mostra come far scadere il cookie non partizionato denominato example
e come lasciare senza impatto i cookie partizionati, anche se hanno lo stesso nome. Se non esiste già, verrà aggiunto o aggiornato un nuovo cookie suddiviso in parti denominato cookieName
.
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Rinominare i cookie
Il modo più efficace per garantire una transizione senza problemi è utilizzare nomi diversi per i cookie suddivisi e non suddivisi. Ad esempio, se hai un cookie non partizionato denominato "example", puoi eseguirne la migrazione a un cookie partizionato.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Poiché la scadenza del cookie non è esposta in modo programmatico, non è possibile impostare la scadenza del nuovo cookie in modo che coincida con quella del cookie non partizionato. Potrebbe essere pratico aggiornare il valore del cookie durante questa procedura.
Mantieni cookie partizionati e non partizionati
Durante il periodo di transizione, ti consigliamo di mantenere due cookie sincronizzati separati: uno partizionato e uno non partizionato. Ad esempio, potresti avere sia i cookie auth
che auth-partitioned
, dove quest'ultimo è stato impostato con l'attributo Partitioned
.
Ogni volta che il valore viene aggiornato, devi provare a impostare entrambi i cookie.
- Nei client che bloccano i cookie di terze parti, ma non supportano ancora CHIPS: neanche un cookie verrà accettato.
- Sui client che bloccano i cookie di terze parti e supportano i CHIPS: il cookie
auth
verrà rifiutato, ma il cookieauth-partitioned
sarà accettato. - Sui client che non bloccano i cookie di terze parti, indipendentemente dal fatto che supportino CHIPS: sono accettati sia
auth
cheauth-partitioned
.
Quando la tua applicazione deve leggere il cookie di autenticazione, devi prima cercare auth-partitioned
. Tuttavia, se devi eseguire il rollback temporaneo della modifica, puoi tornare alla ricerca del cookie auth
.
Una volta stabilito che i cookie della maggior parte degli utenti sono stati aggiornati, il cookie auth-partitioned
può essere ritirato e l'attributo Partizionato può essere aggiunto al normale cookie di autenticazione.