Получить содержимое DOM междоменного iframe

У меня есть iframe для междоменного сайта. Я хочу прочитать DOM iframe, который, как я полагал, был возможен, потому что, используя инспектор, я могу даже изменить DOM iframe. Тем не менее, всякий раз, когда я пытаюсь его прочитать, я сталкиваюсь с той же политикой происхождения. Все, что я хочу, это содержимое, загруженное в мою локальную DOM, из iframe. Я думал, что это будет так же просто, как $(document.body).find('iframe').html(), но возвращает пустую строку.

Я действительно надеюсь, что есть способ сделать это, так как работа, которую я делал в течение последних нескольких дней, была основана на том, что это возможно.

Спасибо

Ответ 1

Вы не можете. XSS protection. Содержимое кросс-сайта не может быть прочитано javascript. Никакой основной браузер не позволит вам этого. Извините, но это недостаток дизайна, вы должны отказаться от этой идеи.

ИЗМЕНИТЬ

Обратите внимание, что если вы редактируете доступ к веб-сайту, загруженному в iframe, у вас есть два варианта:

Access-Control-Allow-Origin: http://foo.example

где http://foo.example - это домен, на котором размещена страница с iframe в ней

Ответ 2

Если у вас есть доступ к странице iframed, вы можете использовать что-то вроде easyXDM, чтобы выполнять вызовы функций в iframe и возвращать данные.

Если у вас нет доступа к iframed-странице, вам придется использовать решение на стороне сервера. С PHP вы можете сделать что-то быстрое и грязное, как:

    <?php echo file_get_contents('http://url_of_the_iframe/content.php'); ?> 

Ответ 3

Существует простой способ.

Вы получите iframe, у которого есть домен, отличный от вашего, тогда вы сможете использовать $( "iframe" ). contents(). find ( "body" ) для управления содержимым.

Ответ 4

Если у вас есть доступ к этому загружаемому домену /iframe, вы можете использовать window.postMessage для связи между iframe и основным окном.

Прочитайте DOM с JavaScript в iframe и отправьте его через postMessage в верхнее окно.

Дополнительная информация здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Ответ 5

Там есть обходное решение для достижения этой цели.

  • Во-первых, привяжите ваш iframe к целевой странице с относительным URL-адресом. Браузеры будут обрабатывать сайт в iframe в том же домене с вашего сайта.

  • На вашем веб-сервере, используя модуль перезаписи для перенаправления запроса от относительного URL-адреса на абсолютный URL-адрес. Если вы используете IIS, я рекомендую вам проверить модуль IIRF.