Chrome 115 introdujo cambios en las APIs de almacenamiento, service workers y comunicación mediante la partición en contextos de terceros. Además de estar aisladas por la política del mismo origen, las APIs afectadas usadas en contextos de terceros también están aisladas por el sitio del contexto de nivel superior.
Los sitios que no hayan tenido tiempo de implementar la compatibilidad con la partición de almacenamiento de terceros pueden participar en una prueba de baja para anular la partición temporalmente (continuar el aislamiento por política del mismo origen, pero quitar el aislamiento por el sitio de nivel superior) y restablecer el comportamiento anterior de las APIs de almacenamiento, service workers y comunicación en el contenido incorporado en su sitio. Esta prueba de baja vencerá con el lanzamiento de Chrome 127 el 3 de septiembre de 2024. Ten en cuenta que esto es independiente de la prueba de baja para el acceso a las cookies de terceros: solo es para el acceso al almacenamiento.
Como solución a largo plazo para abordar ciertos casos de uso que se ven afectados por la partición de almacenamiento sin cookies de terceros, Chrome propone que los terceros puedan solicitar acceso de almacenamiento o comunicación (con o sin cookies) a través de la API de Storage Access (envío a partir de Chrome 117), que ya permite que los terceros soliciten acceso a las cookies.
A partir de Chrome 120, esta propuesta estará disponible para la experimentación a través de una prueba de origen. Los desarrolladores deben participar en esta prueba de origen para evaluar cómo la solución propuesta aborda sus casos de uso y asegurarse de estar preparados antes de que finalice la prueba de baja.
Detalles de la prueba de origen
A partir de Chrome 120, Chrome admitirá una prueba de origen, StorageAccessAPIBeyondCookies, para habilitar la extensión propuesta de la API de Storage Access (retrocompatible) que permite el acceso al almacenamiento no particionado (con cookies y sin ellas) en un contexto de terceros.
Mecánica
La API se puede usar de la siguiente manera (JavaScript que se ejecuta en un iframe incorporado):
// Request a new storage handle via rSA (this should prompt the user)
const handle = await document.requestStorageAccess({all: true});
// Write some 1P context sessionStorage
handle.sessionStorage.setItem('userid', '1234');
// Write some 1P context localStorage
handle.localStorage.setItem('preference', 'A');
// Open or create an indexedDB that is shared with the 1P context
const messageDB = handle.indexedDB.open('messages');
// Use locks shared with the 1P context
await handle.locks.request('example', ...);
Si solo quieres acceso a una API específica en lugar de acceso a all
, puedes pasar los nombres de los controladores de API que necesitas. Por ejemplo, puedes pasar {sessionStorage: true}
para obtener acceso solo al almacenamiento de sesiones o {indexedDB: true, locks:true}
para obtener acceso a IndexedDB y Web Locks.
Además de llamar a esta extensión adicional, el acceso al almacenamiento sin cookies coincidiría con los requisitos actuales para el acceso a las cookies a través de la API de Storage Access. Por ejemplo, en Chrome, no se muestra ningún mensaje cuando los orígenes están en el mismo conjunto de sitios web relacionados (RWS, el nuevo nombre de los conjuntos propios). Los orígenes que no forman parte de la misma RWS estarán sujetos a los requisitos de solicitud de la API de Storage Access en Chrome.
Duración
La prueba de origen estará disponible desde Chrome 120 hasta Chrome 125 (o después del 6 de agosto de 2024 en cualquier evento importante).
Alcance
Solo DOM Storage (almacenamiento de sesión y local), Indexed DB y Web Locks están disponibles en Chrome 120.
En Chrome 121, se agregaron el almacenamiento en caché, el sistema de archivos privados de origen, la cuota, el almacenamiento de BLOB y el canal de transmisión.
En Chrome 123, se agregaron los trabajadores compartidos y el control sobre la inclusión de cookies.
Los trabajadores dedicados heredan el acceso a las cookies no particionadas si se llamó a requestStorageAccess
antes de que se creara el trabajador a partir de Chrome 120 (esto no requiere el uso del identificador de la API de Storage Access).
Participación
- Evalúa cómo usas el almacenamiento de cookies y sin cookies en un contexto de terceros. Los casos de uso de ejemplo pueden ayudarte a comprender si esta propuesta se ajusta a tus necesidades.
- Inicia la versión 120 de Chrome (o una posterior) y asegúrate de que la marca test-third-party-cookie-phaseout esté habilitada.
- Si quieres probar la función de forma local sin configurar primero un token de prueba de origen, puedes habilitar #enable-experimental-web-platform-features en tu navegador.
- Una vez que termines de realizar pruebas de forma local, puedes registrarte para la prueba de origen de StorageAccessAPIBeyondCookies y obtener un token para tus dominios. Para obtener instrucciones más detalladas, consulta Cómo comenzar a usar las pruebas de origen. La guía para solucionar problemas relacionados con las pruebas de origen de Chrome proporciona una lista de tareas completa para garantizar que tu token esté configurado correctamente.
- Incorpora ese token de prueba de origen en el iframe en el que debes usar el identificador de la API de Storage Access, con un encabezado HTTP, una metaetiqueta HTML o de forma programática. Ten en cuenta que cualquier marco que desee usar esta API debe incorporar el token. Si lo incorporas en el marco superior, no se habilitará la API en los marcos secundarios.
- Llama a
document.requestStorageAccess(...)
para obtener el identificador de la API de Storage Access en el iframe entre sitios. Consulta la documentación de la API de Storage Access para conocer los requisitos que se deben cumplir para que esta llamada se realice correctamente. - Migra el almacenamiento relacionado en tu iframe para usar el controlador de la API de Storage Access si está disponible. Por ejemplo, las llamadas a
window.sessionStorage.setItem(...)
se convierten enhandle.sessionStorage.setItem(...)
. - Abre tu sitio web y verifica que el control de acceso de almacenamiento funcione según lo previsto.
- Para dejar de participar en la prueba de origen, quita el token que agregaste en el paso 3.
- Envía comentarios o informa cualquier problema que encuentres al repositorio de GitHub de almacenamiento sin cookies de la API de Storage Access.
Demostración: Usa la API de Storage Access para acceder al almacenamiento local sin particionar
En la siguiente demostración, se muestra cómo acceder a canales de transmisión no particionados desde un iframe de terceros con la API de Acceso a almacenamiento:
https://saa-beyond-cookies.glitch.me/
La demostración requiere Chrome 121 o versiones posteriores con la marca test-third-party-cookie-phaseout habilitada.