Chrome 115 introdujo cambios en el almacenamiento, los service workers y las APIs de 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 que se usan en contextos de terceros también están aisladas por el sitio del contexto de nivel superior.
Los sitios que no tuvieron tiempo para implementar la compatibilidad con la partición de almacenamiento de terceros pueden participar en una prueba de baja para desvincular temporalmente (continuar el aislamiento según la política del mismo origen, pero quitar el aislamiento por el sitio de nivel superior) y restablecer el comportamiento anterior del almacenamiento, los service workers y las APIs de 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 cookies de terceros: es solo para acceder al almacenamiento.
Como solución a largo plazo para abordar ciertos casos de uso interrumpidos por la partición de almacenamiento de terceros que no corresponde a cookies, Chrome propone la capacidad de que los terceros soliciten acceso de almacenamiento o comunicación (ya sea con cookies o sin cookies) a través de la API de Storage Access (envío a partir de Chrome 117), que ya permite a los terceros solicitar acceso con cookies.
A partir de Chrome 120, esta propuesta estará disponible para experimentar con 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, así, garantizar que estén 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 (compatible con versiones anteriores) para permitir el acceso al almacenamiento no particionado (cookie y no cookie) 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 deseas obtener acceso específico a la API, en lugar de acceder a all
, puedes pasar los nombres solo de los controladores de API que necesitas. Por ejemplo, puedes pasar {sessionStorage: true}
para solo obtener acceso al almacenamiento de sesión o {indexedDB: true, locks:true}
para obtener acceso a IndexedDB y a los bloqueos web.
Además de llamar a esta extensión adicional, el acceso al almacenamiento sin cookies coincidiría con los requisitos actuales para el acceso de cookies a través de la API de Storage Access. Por ejemplo, en Chrome, no se muestra ningún mensaje cuando los orígenes se encuentran en el mismo conjunto de sitios web relacionados (RWS, el nuevo nombre de los conjuntos propios). Los orígenes que no forman parte del mismo RWS estarán sujetos a los requisitos de solicitudes 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 versión importante).
Alcance
Solo el almacenamiento DOM (almacenamiento local y de sesión), la base de datos indexada y los bloqueos web están disponibles en Chrome 120.
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 121.
Se agregaron Trabajadores compartidos y control sobre la inclusión de cookies en Chrome 123.
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 usar el controlador de API de Storage Access).
Participación
- Evalúa cómo usas el almacenamiento de cookies y no cookies en un contexto de terceros. Los ejemplos de casos de uso 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 haya terminado la prueba local, puede registrarse en la prueba de origen StorageAccessAPIBeyondCookies y obtener un token para sus dominios. Para obtener instrucciones más detalladas, visita Comienza a usar las pruebas de origen. La guía para solucionar problemas de pruebas de origen de Chrome proporciona una lista de tareas completa para garantizar que el token se haya configurado correctamente.
- Incorpora ese token de prueba de origen en el iframe que necesitas para usar el controlador de la API de Storage Access. Puedes hacerlo mediante un encabezado HTTP, una metaetiqueta HTML o de manera programática. Ten en cuenta que el token debe estar incrustado por cualquier marco que desee usar esta API; su incorporación en el marco superior no habilitará la API en los marcos secundarios.
- Llama a
document.requestStorageAccess(...)
para obtener el controlador 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 necesarios para que la llamada se realice de forma correcta. - 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 controlador de acceso al 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 en el repositorio de GitHub de almacenamiento que no sea de cookies de la API de Storage Access.
Demostración: Uso de la API de Storage Access para acceder al almacenamiento local no particionado
La siguiente demostración muestra cómo acceder a canales de transmisión no particionados desde un iframe de terceros con la API de Storage Access:
https://saa-beyond-cookies.glitch.me/
La demostración requiere Chrome 121 o una versión posterior con la marca test-third-party-cookie-phaseout habilitada.