El aislamiento de origen cruzado permite que una página web use funciones potentes, como SharedArrayBuffer. En este artículo, se explica cómo habilitar el aislamiento de origen cruzado en tu sitio web.
En esta guía, se muestra cómo habilitar el aislamiento de origen cruzado. El aislamiento de origen cruzado es obligatorio si quieres usar
SharedArrayBuffer,
performance.measureUserAgentSpecificMemory(),
o un temporizador de alta resolución con mejor precisión.
Si tienes la intención de habilitar el aislamiento de origen cruzado, evalúa el impacto que tendrá en otros recursos de origen cruzado de tu sitio web, como las posiciones de anuncios.
Determina en qué parte de tu sitio web se usa SharedArrayBuffer
A partir de Chrome 92, las funcionalidades que usan SharedArrayBuffer
ya no funcionarán sin el aislamiento de origen cruzado. Si llegaste a esta página
debido a un mensaje de baja de SharedArrayBuffer, es probable que
tu sitio web o uno de los recursos incorporados en él use SharedArrayBuffer.
Para asegurarte de que nada se interrumpa en tu sitio web debido a la baja, comienza por
identificar dónde se usa.
Si no estás seguro de en qué parte de tu sitio se usa SharedArrayBuffer, hay dos formas de averiguarlo:
- Cómo usar las Herramientas para desarrolladores de Chrome
- (Avanzado) Cómo usar los informes de baja
Si ya sabes dónde usas SharedArrayBuffer, ve a Analiza el impacto del aislamiento de origen cruzado.
Cómo usar las Herramientas para desarrolladores de Chrome
Las Herramientas para desarrolladores de Chrome permiten que los desarrolladores inspeccionen sitios web.
- Abre las Herramientas para desarrolladores de Chrome en la página que sospechas que podría usar
SharedArrayBuffer. - Selecciona el panel de la Consola.
- Si la página usa
SharedArrayBuffer, aparecerá el siguiente mensaje:[Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around May 2021. See for more details. common-bundle.js:535
- El nombre del archivo y el número de línea al final del mensaje (por ejemplo,
common-bundle.js:535) indican de dónde provieneSharedArrayBuffer. Si se trata de una biblioteca de terceros, comunícate con el desarrollador para solucionar el problema. Si se implementa como parte de tu sitio web, sigue la guía que se indica a continuación para habilitar el aislamiento de origen cruzado.
(Avanzado) Cómo usar los informes de baja
Algunos navegadores tienen una funcionalidad de informes de baja de APIs a un extremo especificado.
- Configura un servidor de informes de baja y obtén la URL de informes. Para ello, puedes usar un servicio público o crear uno tú mismo.
- Con la URL, establece el siguiente encabezado HTTP en las páginas que potencialmente
publican
SharedArrayBuffer.Report-To: {"group":"default","max_age":86400,"endpoints":[{"url":"THE_DEPRECATION_ENDPOINT_URL"}]} - Una vez que el encabezado comience a propagarse, el extremo que registraste debería empezar a recopilar informes de baja.
Consulta un ejemplo de implementación.
Analiza el impacto del aislamiento de origen cruzado
¿No sería genial si pudieras evaluar el impacto que tendría habilitar el aislamiento de origen cruzado en tu sitio sin interrumpir nada? Los encabezados HTTP
Cross-Origin-Opener-Policy-Report-Only y
Cross-Origin-Embedder-Policy-Report-Only
te permiten hacer precisamente eso.
- Establece
Cross-Origin-Opener-Policy-Report-Only: same-originen tu documento de nivel superior. Como indica el nombre, este encabezado solo envía informes sobre el impacto queCOOP: same-origintendría en tu sitio. En realidad, no inhabilitará la comunicación con las ventanas emergentes. - Configura los informes y un servidor web para recibir y guardar los informes.
- Establece
Cross-Origin-Embedder-Policy-Report-Only: require-corpen tu documento de nivel superior. Una vez más, este encabezado te permite ver el impacto de habilitarCOEP: require-corpsin afectar el funcionamiento de tu sitio. Puedes configurar este encabezado para enviar informes al mismo servidor de informes que configuraste en el paso anterior.
Mitiga el impacto del aislamiento de origen cruzado
Después de determinar qué recursos se verán afectados por el aislamiento de origen cruzado, estas son las instrucciones generales para habilitar esos recursos de origen cruzado:
- En los recursos de origen cruzado, como imágenes, secuencias de comandos, hojas de estilo, iframes y
otros, establece el
Cross-Origin-Resource-Policy:cross-originencabezado. En los recursos del mismo sitio, establece elCross-Origin-Resource-Policy:same-siteencabezado. - Para los recursos que se pueden cargar con CORS, asegúrate de que esté habilitado. Para ello, establece el atributo
crossoriginen su etiqueta HTML (por ejemplo,<img src="example.jpg" crossorigin>). Para la solicitud de recuperación de JavaScript, asegúrate de querequest.modeesté configurado comocors. - Si quieres usar funciones potentes, como
SharedArrayBuffer, dentro de un iframe cargado, agregaallow="cross-origin-isolated"a la<iframe>. - Si los recursos de origen cruzado cargados en iframes o secuencias de comandos de trabajador implican otra capa de iframes o secuencias de comandos de trabajador, aplica de forma recursiva los pasos descritos en esta sección antes de continuar.
- Una vez que confirmes que todos los recursos de origen cruzado están habilitados, establece el encabezado
Cross-Origin-Embedder-Policy: require-corpen iframes y secuencias de comandos de trabajador (esto es obligatorio, independientemente del origen cruzado o del mismo origen). - Asegúrate de que no haya ventanas emergentes de origen cruzado que requieran comunicación a través de
postMessage(). No hay forma de que sigan funcionando cuando se habilita el aislamiento de origen cruzado. Puedes mover la comunicación a otro documento que no esté aislado de origen cruzado o usar un método de comunicación diferente (por ejemplo, solicitudes HTTP).
Habilita el aislamiento de origen cruzado
Después de mitigar el impacto del aislamiento de origen cruzado, estas son las instrucciones generales para habilitar el aislamiento de origen cruzado:
- Establece el encabezado
Cross-Origin-Opener-Policy: same-originen tu documento de nivel superior. Si establecisteCross-Origin-Opener-Policy-Report-Only: same-origin, reemplázalo. Esto bloquea la comunicación entre tu documento de nivel superior y sus ventanas emergentes. - Establece el encabezado
Cross-Origin-Embedder-Policy: require-corpen tu documento de nivel superior. Si establecisteCross-Origin-Embedder-Policy-Report-Only: require-corp, reemplázalo. Esto bloqueará la carga de recursos de origen cruzado que no estén habilitados. - Verifica que
self.crossOriginIsolatedmuestretrueen la consola para verificar que tu página esté aislada de origen cruzado.