Transición de cookies no particionadas a particiones particionadas

Cuando realizas la transición de tu sitio a cookies particionadas, es posible que encuentres un comportamiento inesperado si un cliente determinado tiene una cookie particionada y no particionada con los mismos nombres.

Configurar una cookie particionada no anulará ni reemplazará una cookie no particionada existente con el mismo nombre. Ambos existirán, siempre que las cookies de terceros estén habilitadas, pero en contenedores de cookies independientes. 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 solucionar este problema: 1. Haz que la cookie que reemplaces deje de funcionar. 2. Cambia el nombre de tus cookies

Consideraciones clave

Cuando realices la transición a cookies particionadas, ten en cuenta lo siguiente:

  1. No hay forma de determinar de manera programática si una cookie está particionada o no. Sin embargo, puedes determinar el estado particionado de una cookie en las Herramientas para desarrolladores de Chrome.
  2. Las cookies particionadas no reemplazan a las cookies no particionadas: las cookies que son exactamente iguales (es decir, tienen los mismos atributos, como el nombre, el dominio o la ruta) se tratarán como cookies separadas si solo una tiene el atributo Partitioned.
  3. Es mejor evitar una situación en la que tendrías una cookie particionada y una cookie no particionada con el mismo nombre que se mostrarían en la misma llamada de red.

Haz que las cookies que reemplaces se venzan

Si tu sitio o servicio no puede admitir un cambio en el nombre, puedes crear una cookie particionada nueva y hacer que se venza la cookie no particionada existente. Si bien no hay forma de determinar si una cookie está particionada o no, los encabezados Set-Cookie sin un atributo Partitioned no afectarán a las cookies que no están particionadas.

En el siguiente ejemplo, se muestra cómo hacer clic en el vencimiento de la cookie no particionada llamada example y dejar cualquier cookie particionada sin afectar, incluso si tienen el mismo nombre. Se agregará o actualizará una cookie particionada nueva 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 una transición sin interrupciones es usar nombres diferentes para las cookies particionadas y no particionadas. Por ejemplo, si tienes una cookie no particionada llamada "ejemplo", puedes migrarla a una cookie particionada.

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

Debido a que el vencimiento de la cookie no se expone de manera 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 pragmático 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, es posible que tengas 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 el caso de los clientes que bloquean cookies de terceros, pero aún no admiten CHIPS, no se aceptarán cookies.
  • En el caso de los clientes que bloquean cookies de terceros y admiten CHIPS, se rechazará la cookie auth, pero se aceptará la cookie auth-partitioned.
  • En los clientes que no bloquean las cookies de terceros, independientemente de si admiten CHIPS, se aceptan auth y auth-partitioned.

Cuando tu aplicación necesita leer la cookie de autenticación, primero debes buscar auth-partitioned; pero si tienes que revertir temporalmente el cambio, puedes recurrir a la cookie auth.

Una vez que hayas establecido que se actualizaron las cookies a la mayoría de los usuarios, se podría retirar la cookie auth-partitioned y se podría agregar el atributo particionado a la cookie de autenticación normal.