javascript - ejemplo - Obtiene el contenido DOM del iframe entre dominios
iframe src (5)
Hay una manera simple.
Usted crea un iframe que tiene como fuente algo así como " http://your-domain.com/index.php?url=http://the-site-you-want-to-get.com/unicorn
Luego, acaba de obtener esta URL con $ _GET y muestra los contenidos con file_get_contents ($ _ GET [''url'']);
Obtendrá un iframe que tiene un dominio igual al suyo, luego podrá usar $ ("iframe"). Contents (). Find ("cuerpo") para manipular el contenido.
Esta pregunta ya tiene una respuesta aquí:
- Cross domain iframe issue 2 respuestas
Tengo un iframe para un sitio de dominios cruzados. Quiero leer el DOM del iframe, que creí que era posible porque al usar el inspector, incluso puedo modificar el DOM de un iframe. Sin embargo, cada vez que intento leerlo, me encuentro con la misma política de origen. Todo lo que quiero es que el contenido esté cargado en mi DOM local, desde el iframe. Pensé que sería tan simple como $(document.body).find(''iframe'').html()
, pero eso es devolver la cadena vacía.
Realmente espero que haya una manera de hacerlo, ya que el trabajo que he estado haciendo durante los últimos días se ha basado en que esto es factible.
Gracias
Hay una solución para lograrlo.
Primero, vincula tu iframe a una página de destino con url relativa. Los navegadores tratarán el sitio en iframe del mismo dominio con su sitio web.
En su servidor web, utilice un módulo de reescritura para redirigir la solicitud de la URL relativa a la URL absoluta. Si usa IIS, le recomiendo que revise el módulo IIRF .
No puedes. Protección XSS . Los contenidos cruzados del sitio no pueden leerse mediante javascript. Ningún navegador importante te permitirá eso. Lo siento, pero este es un error de diseño, debes abandonar la idea.
EDITAR
Tenga en cuenta que si tiene acceso de edición al sitio web cargado en el iframe, puede usar postMessage (también vea la compatibilidad del navegador )
Si tiene acceso a ese dominio / iframe que está cargado, entonces puede usar window.postMessage para comunicarse entre iframe y la ventana principal.
Lea el DOM con JavaScript en iframe y envíelo a través de postMessage a la ventana superior.
Más información aquí: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
Si tiene acceso a la página iframed, podría usar algo como easyXDM para hacer llamadas a funciones en el iframe y devolver los datos.
Si no tiene acceso a la página iframed tendrá que usar una solución del lado del servidor. Con PHP puedes hacer algo rápido y sucio como:
<?php echo file_get_contents(''http://url_of_the_iframe/content.php''); ?>