Transizione dai cookie non partizionati a quelli partizionati

Quando esegui la transizione del tuo sito ai cookie partizionati, potresti riscontrare comportamenti imprevisti se sono presenti sia un cookie partizionato che un cookie non partizionato con gli stessi nomi per un determinato client.

L'impostazione di un cookie partizionato non sostituisce o sostituisce un cookie non partizionato esistente con lo stesso nome. Saranno disponibili entrambi, purché i cookie di terze parti sono abilitati, ma in contenitori di cookie separati. Quando i cookie di terze parti sono disabilitati, verrà accettato solo quello partizionato. Se sono presenti entrambi i cookie, non è possibile in modo programmatico stabilire quale partizionamento e quale no, il che può portare a comportamenti imprevisti.

Esistono due possibili soluzioni per risolvere questo problema: 1. Fai scadere il cookie che stai sostituendo 2. Rinominare i cookie

Considerazioni principali

Quando passi ai cookie partizionati, tieni presente quanto segue:

  1. Non è possibile determinare in modo programmatico se un cookie è partizionato o non partizionato. Tuttavia, puoi determinare lo stato partizionato di un cookie in Chrome DevTools.
  2. I cookie partizionati non sovrascrivono quelli non partizionati. Due cookie esattamente uguali (ossia, con gli stessi attributi, come nome, dominio o percorso) verranno trattati come cookie separati se solo uno ha l'attributo Partitioned.
  3. È preferibile evitare che, nella stessa chiamata di rete, vengano restituiti sia un cookie partizionato che un cookie non partizionato con lo stesso nome.

Fai scadere i cookie che stai sostituendo

Se il tuo sito o servizio non è in grado di modificare il nome, puoi creare un nuovo cookie partizionato e far scadere il cookie non partizionato esistente. Sebbene non sia possibile determinare se un cookie è partizionato o meno, le intestazioni Set-Cookie senza un attributo Partitioned non influiscono sui cookie non partizionati.

L'esempio seguente mostra come far scadere il cookie non partizionato denominato example e lasciare invariati i cookie partizionati, anche se hanno lo stesso nome. Se esiste già, verrà aggiunto o aggiornato un nuovo cookie partizionato 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ù sicuro per garantire una transizione senza interruzioni è utilizzare nomi diversi per i cookie partizionati e non partizionati. Ad esempio, se hai un cookie non partizionato denominato "example", puoi eseguirne la migrazione in un cookie partizionato.

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

Poiché la scadenza del cookie non viene esposta in modo programmatico, non è possibile impostare la scadenza del nuovo cookie in modo che coincida con quella del cookie non partizionato. Durante questa procedura, potrebbe essere pragmatico aggiornare il valore del cookie.

Mantieni i cookie partizionati e non partizionati

Durante il periodo di transizione, valuta la possibilità di mantenere due cookie sincronizzati separati: uno partizionato e l'altro no. Ad esempio, potresti avere entrambi i cookie auth e auth-partitioned, dove il secondo è stato impostato con l'attributo Partitioned.

Ogni volta che il valore viene aggiornato, devi provare a impostare entrambi i cookie.

  • Sui client che bloccano i cookie di terze parti, ma non supportano ancora i CHIPS: nessun cookie sarà accettato.
  • Sui client che bloccano i cookie di terze parti e supportano i CHIPS: il cookie auth viene rifiutato, ma il cookie auth-partitioned viene accettato.
  • Sui client che non bloccano i cookie di terze parti, indipendentemente dal fatto che supportino i CHIPS, sono accettati sia auth sia auth-partitioned.

Quando la tua applicazione deve leggere il cookie di autenticazione, dovresti cercare prima auth-partitioned; ma se devi eseguire temporaneamente il rollback della modifica, puoi tornare alla ricerca del cookie auth.

Dopo aver verificato che la maggior parte degli utenti ha aggiornato i cookie, il cookie auth-partitioned può essere ritirato e l'attributo partizionato può essere aggiunto al normale cookie di autorizzazione.