Lorsque vous passez à des cookies partitionnés sur votre site, vous pouvez rencontrer un comportement inattendu si un cookie partitionné et un cookie non partitionné portant le même nom sont présents pour un client donné.
La définition d'un cookie partitionné ne remplace ni ne remplace un cookie non partitionné existant portant le même nom. Les deux existent, tant que les cookies tiers sont activés, mais dans des pots de cookies distincts. Lorsque les cookies tiers sont désactivés, seul celui partitionné est accepté. Si les deux cookies sont présents, il n'est pas possible de déterminer de manière programmatique lequel est partitionné et lequel ne l'est pas, ce qui peut entraîner un comportement inattendu.
Pour résoudre ce problème, vous avez deux options : 1. Expiration du cookie que vous remplacez. 2. Renommer vos cookies
Remarques importantes
Lorsque vous passez aux cookies partitionnés, tenez compte des points suivants:
- Il n'existe aucun moyen de déterminer de manière programmatique si un cookie envoyé dans une requête HTTP est partitionné ou non. Vous pouvez toutefois déterminer l'état de partitionnement d'un cookie dans les outils pour les développeurs Chrome. Vous pouvez distinguer les cookies partitionnés et non partitionnés qui ne comportent pas l'attribut
HttpOnly
à l'aide de l'API CookieStore. - Les cookies partitionnés n'écrasent pas les cookies non partitionnés. Deux cookies qui sont exactement identiques (c'est-à-dire qui possèdent les mêmes attributs tels que le nom, le domaine ou le chemin) seront traités comme des cookies distincts si l'un d'eux possède l'attribut
Partitioned
. - Il est préférable d'éviter les situations dans lesquelles un cookie partitionné et un cookie non partitionné du même nom seraient renvoyés dans le même appel réseau.
Faire expirer les cookies que vous remplacez
Si votre site ou service ne peut pas accepter un changement de nom, vous pouvez créer un nouveau cookie partitionné tout en faisant expirer le cookie non partitionné existant. Bien qu'il n'existe aucun moyen de déterminer si un cookie est partitionné ou non, les en-têtes Set-Cookie
avec un attribut Partitioned
n'affectent pas les cookies qui ne sont pas partitionnés.
L'exemple suivant montre comment expirer le cookie non partitionné appelé example
et laisser les cookies partitionnés inchangés, même s'ils portent le même nom. Un nouveau cookie partitionné appelé cookieName
sera ajouté ou mis à jour s'il existe déjà.
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Renommer vos cookies
Le moyen le plus efficace d'assurer une transition fluide consiste à utiliser des noms différents pour vos cookies, qu'ils soient partitionnés ou non. Par exemple, si vous disposez d'un cookie non partitionné nommé "example", vous pouvez le migrer vers un cookie partitionné.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Étant donné que l'expiration du cookie n'est pas exposée de manière automatisée, il n'existe aucun moyen de définir l'expiration du nouveau cookie pour qu'elle coïncide avec celle du cookie non partitionné. Il peut être pragmatique d'actualiser la valeur du cookie au cours de ce processus.
Gérer les cookies partitionnés et non partitionnés
Pendant la période de transition, envisagez de conserver deux cookies synchronisés distincts : l'un partitionné et l'autre non. Par exemple, vous pouvez avoir à la fois des cookies auth
et auth-partitioned
, ces derniers étant définis avec l'attribut Partitioned
.
Chaque fois que la valeur est mise à jour, vous devez essayer de définir les deux cookies.
- Sur les clients qui bloquent les cookies tiers, mais qui ne sont pas encore compatibles avec CHIPS : aucun cookie ne sera accepté.
- Sur les clients qui bloquent les cookies tiers et prennent en charge les CHIPS: le cookie
auth
est rejeté, mais le cookieauth-partitioned
est accepté. - Sur les clients qui ne bloquent pas les cookies tiers, que ceux-ci soient compatibles avec CHIPS ou non :
auth
etauth-partitioned
sont acceptés.
Lorsque votre application doit lire le cookie d'authentification, vous devez d'abord rechercher auth-partitioned
. Toutefois, si vous devez annuler temporairement la modification, vous pouvez rechercher le cookie auth
.
Une fois que vous avez établi que la majorité des utilisateurs ont actualisé leurs cookies, le cookie auth-partitioned
peut être abandonné et l'attribut partitionné peut être ajouté au cookie d'authentification standard.