Cuando realices la transición de tu sitio a las cookies particionadas, es posible que se produzca un comportamiento inesperado si hay una cookie particionada y una no particionada con los mismos nombres para un cliente determinado.
La configuración de una cookie particionada no anulará ni reemplazará una cookie no particionada existente con el mismo nombre. Ambas existirán, siempre y cuando las cookies de terceros estén habilitadas, pero en contenedores de cookies separados. Cuando se inhabiliten las cookies de terceros, solo se aceptará la particionada. Si ambas cookies están presentes, no es posible saber de manera programática cuál está particionada y cuál no, y esto puede generar un comportamiento inesperado.
Existen dos opciones posibles para abordar este problema: 1. Haz que venza la cookie que reemplazarás. 2. Cómo cambiar el nombre de las cookies
Consideraciones clave
Cuando realices la transición a las cookies particionadas, ten en cuenta lo siguiente:
- No hay forma de determinar de forma programática si una cookie enviada en una solicitud HTTP está particionada o no. Sin embargo, puedes determinar el estado particionado de una cookie en las Herramientas para desarrolladores de Chrome. Puedes distinguir entre cookies particionadas y no particionadas que no tienen el atributo
HttpOnly
con la API de CookieStore. - Las cookies particionadas no reemplazan las cookies no particionadas: dos cookies que son exactamente iguales (es decir, tienen los mismos atributos, como nombre, dominio o ruta) se tratarán como cookies separadas si solo una tiene el atributo
Partitioned
. - Es mejor evitar una situación en la que se devuelvan una cookie particionada y una no particionada con el mismo nombre en la misma llamada de red.
Haz que venzan las cookies que reemplazarás
Si tu sitio o servicio no puede admitir un cambio de nombre, puedes crear una nueva cookie particionada mientras vence la cookie no particionada existente. Si bien no hay forma de determinar si una cookie está particionada o no, los encabezados Set-Cookie
con un atributo Partitioned
no afectarán a las cookies que no están particionadas.
En el siguiente ejemplo, se muestra cómo vencer la cookie no particionada llamada example
y dejar sin afectar las cookies particionadas, incluso si tienen el mismo nombre. Se agregará o actualizará una nueva cookie particionada llamada cookieName
si ya existe.
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Cambia el nombre de tus cookies
La forma más sólida de garantizar que haya una transición fluida es usar nombres diferentes para tus cookies particionadas y no particionadas. Por ejemplo, si tienes una cookie no particionada llamada “example”, puedes migrarla a una cookie particionada.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
Dado que el vencimiento de la cookie no se expone de forma programática, no hay forma de configurar el vencimiento de la cookie nueva para que coincida con el de la cookie no particionada. Puede ser práctico actualizar el valor de la cookie durante este proceso.
Mantén cookies particionadas y no particionadas
Durante el período de transición, considera mantener dos cookies sincronizadas separadas: una que esté particionada y otra que no. Por ejemplo, puedes tener cookies auth
y auth-partitioned
, en las que la última se configuró con el atributo Partitioned
.
Cada vez que se actualice el valor, debes intentar configurar ambas cookies.
- En los clientes que bloquean las cookies de terceros, pero aún no admiten CHIPS, no se aceptará ninguna cookie.
- En los clientes que bloquean las cookies de terceros y admiten CHIPS, se rechazará la cookie
auth
, pero se aceptará la cookieauth-partitioned
. - En los clientes que no bloquean las cookies de terceros, sin importar si admiten CHIPS, se aceptan
auth
yauth-partitioned
.
Cuando la aplicación necesite leer la cookie de autenticación, debes buscar auth-partitioned
primero. Sin embargo, si tienes que revertir de forma temporal el cambio, puedes recurrir a buscar la cookie auth
.
Una vez que hayas establecido que a la mayoría de los usuarios se les actualizaron las cookies, podría quitarse la cookie auth-partitioned
y agregar el atributo particionado a la cookie de autenticación normal.