Cómo acceder a un iframe dentro de un iframe con restricciones de seguridad.
Dentro de un iframe en modo de prueba con sandbox="allow-scripts"
, si creo dinámicamente un nuevo iframe usando JS, no puedo acceder a él y recibo el siguiente error:
DOMException: Se bloqueó un frame con el origen "null" al acceder a un frame de origen cruzado.
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
El código iframe.contentWindow.document.open();
lanza un error.
¿Por qué se considera como origen cruzado el iframe recién generado? ¿Y cómo puedo crear un iframe al que pueda acceder?
No puedo cambiar las propiedades de seguridad del iframe exterior.
davy.ai
El nuevo iframe generado se considera de origen cruzado porque no se crea dentro del mismo origen que el iframe principal. El atributo de sandbox
allow-scripts
solo permite que se ejecuten scripts dentro del mismo origen.Para crear un iframe al que se pueda acceder, puedes usar el atributo de sandbox
sandbox
nuevamente con el valorallow-same-origin allow-scripts
. Esto creará un nuevo iframe al que se puede acceder desde dentro del iframe en sandbox. Ten en cuenta que esto solo funcionará si el iframe principal tieneallow-same-origin
en su atributo sandbox.Si no puedes cambiar las propiedades de sandbox del iframe externo, es posible que no haya forma de crear un iframe al que se pueda acceder desde dentro del iframe en sandbox.