PHP: рендеринг iframe на стороне сервера - PullRequest
0 голосов
/ 09 сентября 2018

Я понимаю, что iframe отображается движком браузера
Есть ли способ отобразить полный HTML на стороне сервера и передать его клиенту?
Я попробовал функцию PHP file_get_contents () и атрибут srcdoc для iframe

Это просто загружает содержимое страницы и делает его непригодным для использования

<?= file_get_contents('http://dns_blocked_by_isp.com'); ?>

И это делает нерабочий iframe

<iframe srcdoc="<?= file_get_contents('http://dns_blocked_by_isp.com'); ?>"
        frameborder=0 width=510 height=400 scrolling=no
        allowfullscreen=allowfullscreen>
</iframe>

Так что я в основном ищу альтернативу runat="server" в ASP.NET, но для PHP, если это возможно

Мотивация:

Мой интернет-провайдер заблокировал DNS-адрес, откуда я получаю свой источник iframe, но мой сервер работает в другом регионе, что означает, что он может нормально загружать контент, а URL-адреса в iframe имеют суффикс -cdn.com, который, в свою очередь, не заблокирован провайдером

Спасибо

1 Ответ

0 голосов
/ 10 сентября 2018

Чтобы обойти проблемы поддержки браузера, вам, вероятно, лучше настроить страницу прокси-сервера PHP (т. Е. Скрипт на вашем сервере, который просто выбирает удаленную страницу и служит источником непосредственно как страница с вашего сервера), но Я подозреваю, что проблема, с которой вы сталкиваетесь, заключается в том, что символы ", возвращаемые с удаленной страницы, нарушают атрибут srcdoc. Допустим, удаленный файл выглядит так:

<p class="worldclass">Hello World</p>

Тогда ваш пример приведет к:

<iframe srcdoc="<p class="worldclass">Hello World</p>"

Таким образом, значение srcdoc равно <p class=

Вам просто нужно экранировать код соответствующим образом:

<iframe srcdoc="<?= htmlspecialchars(file_get_contents('http://dns_blocked_by_isp.com')); ?>" frameborder=0 width=510 height=400 scrolling=no allowfullscreen=allowfullscreen> </iframe>

...