Estoy escribiendo una pequeña página web cuyo propósito es enmarcar algunas otras páginas, simplemente consolidarlas en una sola ventana del navegador para facilitar su visualización. Algunas de las páginas que estoy tratando de enmarcar prohíben que se enmarquen y arrojan un "Se niega a mostrar el documento porque la visualización está prohibida por X-Frame-Options". error en Chrome Entiendo que esta es una limitación de seguridad (por una buena razón), y no tengo acceso para cambiarla.
¿Existe algún método alternativo de encuadre o no enmarcado para mostrar páginas dentro de una sola ventana que no se active por el encabezado X-Frame-Options?
iframe
frames
x-frame-options
Garen Checkley
fuente
fuente
Respuestas:
Tuve un problema similar, en el que estaba tratando de mostrar contenido de nuestro propio sitio en un iframe (como un cuadro de diálogo de estilo lightbox con Colorbox ), y donde teníamos un encabezado "SAMEORIGIN de opciones de marco X" en todo el servidor servidor de origen que evita que se cargue en nuestro servidor de prueba.
Esto no parece estar documentado en ningún lado, pero si puede editar las páginas que está tratando de enmarcar (p. Ej., Son sus propias páginas), simplemente envía otro encabezado de opciones de X-Frame con cualquier cadena deshabilitada. los comandos SAMEORIGIN o DENY.
p.ej. para PHP, poniendo
en la parte superior de su página hará que los navegadores combinen los dos, lo que da como resultado un encabezado de
... y le permite cargar la página en un iframe. Esto parece funcionar cuando el comando SAMEORIGIN inicial se configuró a nivel de servidor y desea anularlo en un caso página por página.
¡Todo lo mejor!
fuente
X-Frame-Options: SAMEORIGIN
no hay forma de hacerlo dentro del marco. Debes usar una ventana emergente.header_remove
función, siempre que la tenga disponible (> = 5.3.0).Header always unset X-Frame-Options
GOFORIT
(u otro token no válido arbitrario aleatorio) está rompiendo deliberadamente una medida de seguridad aplicada por un servidor; si usted tiene el control del servidor usted mismo (lo que debe hacer para cualquier servicio público real), lo correcto es configurar el servidor para que no establezca el encabezado en primer lugar.Si recibe este error para un video de YouTube, en lugar de usar la URL completa, use la URL incrustada de las opciones para compartir. Se verá como
http://www.youtube.com/embed/eCfDxZxTBW4
También puede reemplazar
watch?v=
conembed/
lo quehttp://www.youtube.com/watch?v=eCfDxZxTBW4
se conviertehttp://www.youtube.com/embed/eCfDxZxTBW4
fuente
Si recibe este error al intentar incrustar un mapa de Google en un
iframe
, debe agregarlo&output=embed
al enlace de origen.fuente
&output=embed
ACTUALIZACIÓN 2019: Usted puede by-pass
X-Frame-Options
en un<iframe>
usando sólo JavaScript del lado cliente y mi X-Frame-bypass de componentes Web. Aquí hay una demostración: Hacker News en unX-Frame-Bypass
. (Probado en Chrome y Firefox).fuente
Agregar un
a mi enlace en la pestaña de Facebook me solucionó el problema ...
fuente
Hay un complemento para Chrome, que elimina esa entrada de encabezado (solo para uso personal):
https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/reviews
fuente
Si recibe este error al intentar incrustar contenido de Vimeo, cambie el src del iframe,
de: https://vimeo.com/63534746
a: http://player.vimeo.com/video/63534746
fuente
Tuve el mismo problema cuando intenté incrustar moodle 2 en iframe, la solución es
Site administration ► Security ► HTTP security
y compruebeAllow frame embedding
fuente
Esta es la solución chicos !!
¡Lo único que funcionó para las aplicaciones de Facebook!
fuente
Parece que X-Frame-Options Allow-From https: // ... se deprecia y se reemplaza (y se ignora) si usa el encabezado Content-Security-Policy en su lugar.
Aquí está la referencia completa: https://content-security-policy.com/
fuente
Solución para cargar un sitio web externo en un iFrame, incluso si la opción x-frame está configurada para negarse en el sitio web externo.
Si desea cargar otro sitio web en un iFrame y obtiene el
Display forbidden by X-Frame-Options”
error, puede superarlo creando un script proxy del lado del servidor.El
src
atributo del iFrame podría tener una URL como esta:/proxy.php?url=https://www.example.com/page&key=somekey
Entonces proxy.php se vería así:
Esto pasa el bloque, porque es solo una solicitud GET que bien podría haber sido una visita normal a la página del navegador.
Tenga en cuenta: es posible que desee mejorar la seguridad en este script. Porque los hackers podrían comenzar a cargar páginas web a través de su script proxy.
fuente
Intenté casi todas las sugerencias. Sin embargo, lo único que realmente resolvió el problema fue:
Cree un archivo
.htaccess
en la misma carpeta donde se encuentra su archivo PHP.Agregue esta línea al htaccess:
Header always unset X-Frame-Options
Incrustar el PHP por un iframe de otro dominio debería funcionar después.
Además, puede agregar al comienzo de su archivo PHP:
Lo cual, sin embargo, no fue necesario en mi caso.
fuente
Tuve el mismo problema con mediawiki, esto se debió a que el servidor negó incrustar la página en un iframe por razones de seguridad.
Lo resolví escribiendo
en el archivo de configuración de mediawiki php.
Espero eso ayude.
fuente
FWIW:
Tuvimos una situación en la que necesitábamos matar nuestro
iFrame
cuando apareció este código de "interruptor". Entonces, usé el PHPfunction get_headers($url);
para verificar la URL remota antes de mostrarla en uniFrame
. Para un mejor rendimiento, almacené en caché los resultados en un archivo, por lo que no estaba haciendo una conexión HTTP cada vez.fuente
Estaba usando Tomcat 8.0.30, ninguna de las sugerencias me funcionó. Como estamos buscando actualizar
X-Frame-Options
y configurarloALLOW
, así es como lo configuré para permitir iframes incrustados:fuente
La única pregunta que tiene muchas respuestas. Bienvenido a la guía que desearía tener cuando estaba luchando por esto para que funcionara a las 10:30 de la noche del día de la fecha límite ... FB hace algunas cosas raras con las aplicaciones de lienzo, y bueno, te han advertido. Si todavía está aquí y tiene una aplicación Rails que aparecerá detrás de un lienzo de Facebook, necesitará:
Gemfile:
config / facebook.yml
config / application.rb
config / initializers / omniauth.rb
application_controller.rb
Necesita un controlador para llamar desde la configuración del lienzo de Facebook, utilicé
/canvas/
e hice que la ruta fuera la principalSiteController
para esta aplicación:login.html.erb
Fuentes
fuente
target = '_ parent'
Utilizando la idea de Kevin Vella, intenté agregar ese atributo para formar elementos creados por el generador de botones de PayPal. Me funcionó para que Paypal no se abra en una nueva ventana / pestaña del navegador.
fuente
No estoy seguro de cuán relevante es, pero construí una solución para esto. En mi sitio, quería mostrar el enlace en una ventana modal que contenía un iframe que carga la URL.
Lo que hice fue vincular el evento de clic del enlace a esta función de JavaScript. Todo esto hace una solicitud a un archivo PHP que verifica las cabeceras de URL para las opciones de X-FRAME antes de decidir si cargar la URL dentro de la ventana modal o redirigir.
Aquí está la función:
Aquí está el código del archivo PHP que lo comprueba:
Espero que esto ayude.
fuente
Me encontré con este problema al ejecutar un sitio web de WordPress. Intenté todo tipo de cosas para solucionarlo y no estaba seguro de cómo, en última instancia, el problema era porque estaba usando el reenvío de DNS con enmascaramiento, y los enlaces a sitios externos no se abordaban correctamente. es decir, mi sitio estaba alojado en http: //123.456.789/index.html pero estaba enmascarado para ejecutarse en http://somewebSite.com/index.html . Cuando ingresé http: //123.456.789/index.html en el navegador, al hacer clic en esos mismos enlaces no surgieron problemas de origen de cuadros X en la consola JS, pero se ejecutó http://somewebSite.com/index.html hice. Para enmascarar correctamente, debe agregar los servidores de nombres DNS de su host a su servicio de dominio, es decir, godaddy.com debe tener servidores de nombres, por ejemplo, ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com, si fuera utilizando digitalocean.com como su servicio de alojamiento.
fuente
remove_action( 'admin_init', 'send_frame_options_header',10);
evitar este problema ...Es sorprendente que nadie aquí haya mencionado
Apache
la configuración del servidor (*.conf
archivos) o el.htaccess
archivo en sí mismo como causa de este error. Buscar a través de sus.htaccess
oApache
archivos de configuración, asegurándose de que usted no tiene el siguiente conjunto deDENY
:Header always set X-Frame-Options DENY
Al cambiarlo a
SAMEORIGIN
, las cosas funcionan como se espera:Header always set X-Frame-Options SAMEORIGIN
fuente
La única respuesta real, si no controla los encabezados en su fuente que desea en su iframe, es usar un proxy. Haga que un servidor actúe como cliente, reciba la fuente, elimine los encabezados problemáticos, agregue CORS si es necesario y luego haga ping a su propio servidor.
Hay otra respuesta que explica cómo escribir tal proxy. No es difícil, pero estaba seguro de que alguien tuvo que haber hecho esto antes. Era difícil encontrarlo, por alguna razón.
Finalmente encontré algunas fuentes:
https://github.com/Rob--W/cors-anywhere/#documentation
^ preferido. Si necesita un uso raro, creo que puede usar su aplicación heroku. De lo contrario, es código ejecutarlo usted mismo en su propio servidor. Tenga en cuenta cuáles son los límites.
whateverorigin.org
^ segunda opción, pero bastante antigua. opción supuestamente más nueva en python: https://github.com/Eiledon/alloworigin
entonces hay la tercera opción:
http://anyorigin.com/
Lo que parece permitir un poco de uso gratuito, pero lo colocará en una lista pública de vergüenza si no paga y usa una cantidad no especificada, de la que solo puede ser eliminado si paga la tarifa ...
fuente
No se menciona pero puede ayudar en algunos casos:
fuente
Use esta línea dada a continuación en lugar de la
header()
función.fuente
Tuve este problema y lo resolví editando httd.conf
Cambié SAMEORIGIN a GOFORIT y reinicié el servidor
fuente
Pruebe esto, no creo que nadie haya sugerido esto en el tema, esto resolverá como el 70% de su problema, para algunas otras páginas, debe descartarlo, tengo la solución completa pero no para el público,
AGREGAR a continuación a su iframe
sandbox = "allow-same-origin allow-scripts allow-popups allow-forms"
fuente
Edite .htaccess si desea eliminar X-Frame-Options de un directorio completo.
Y agregue la línea: el encabezado siempre desarma las opciones de X-Frame
[contenido de: Superando "Pantalla prohibida por X-Frame-Options"
fuente