La configuración de src directamente en iframe funciona como se esperaba
Estoy tratando de incrustar un documento de Sharepoint aquí.
Por ejemplo
<iframe src="https://rocketlane123-my.sharepoint.com/personal/lokeshkannan_rocketlane123_onmicrosoft_com/_layouts/15/Doc.aspx?sourcedoc={8822527b-0c56-44f9-8263-40c737db903c}&action=embedview" width="476px" height="288px" />Mientras que cuando configuro el src en el script está fallando
<iframe id="x" width="476px" height="288px"></iframe> <script> document.getElementById('x').src = "https://rocketlane123-my.sharepoint.com/personal/lokeshkannan_rocketlane123_onmicrosoft_com/_layouts/15/Doc.aspx?sourcedoc={8822527b-0c56-44f9-8263-40c737db903c}&action=embedview"; </script>Esto sucede explícitamente con SharePoint. Así que me gustaría entender un par de cosas aquí.
1. Am I doing something wrong? 2. Is there any CSP headers which block the parent from adding via JS? 3. Is there any official way from SharePoint to allow this? 3. Is there any way to hack this?Gracias por adelantado.
Dado que esto sucede en Chrome, Safari y Firefox, creo que no es un error en un navegador específico.
Intentar esto en Firefox produce este mensaje de error:
Para proteger su seguridad, login.microsoftonline.com no permitirá que Firefox muestre la página si otro sitio la ha incrustado. Para ver esta página, debe abrirla en una nueva ventana.
Al abrir la consola da este mensaje:
La carga de [ url ] en un marco es denegada por la directiva "X-Frame-Options" establecida en "DENY".
Este es un encabezado establecido por login.microsoft.com para deshabilitar la incrustación del enlace como un iframe.
Este enlace detalla esta elección de diseño: https://docs.microsoft.com/en-us/sharepoint/troubleshoot/sites/cannot-display-sharepoint-pages-in-iframe
El enlace menciona que puede anular el comportamiento configurando 'AllowFraming', aunque no lo recomienda, ya que puede haber cambios importantes en el sitio al incorporarlo.
Puede encontrar una guía para usar esta función en este enlace
El problema está en javascript amp; no debe representarse como &.
Cambia tu enlace a
<body> <iframe id="x" width="476px" height="288px"></iframe> <script> document.getElementById('x').src = "https://rocketlane123.sharepoint.com/sites/MyDocsforSP/_layouts/15/Doc.aspx?sourcedoc={6d327004-5d52-4e42-9707-c964631f8e65}&action=embedview"; </script> </body>