Я загружаю некоторый HTML в iframe, но когда файл, на который ссылаются, использует http, а не https, я получаю следующую ошибку:
[заблокировано] Страница с именем {current_pagename} запускала небезопасный контент из {referenced_filename}
Есть ли способ отключить это или как-то обойти это?
У iframe нет src
атрибута, и его содержимое задается с помощью:
frame.open();
frame.write(html);
frame.close();
Ответы:
Исходя из общности этого вопроса, я думаю, что вам нужно настроить собственный HTTPS-прокси на каком-либо сервере в сети. Сделайте следующие шаги:
Если вы просто загружаете контент с удаленного сайта с помощью file_get_contents или similiar, у вас все равно могут быть небезопасные ссылки на контент. Вы должны найти их с помощью регулярных выражений, а также заменить. Изображения трудно решить, но я нашел обходной путь здесь: http://foundationphp.com/tutorials/image_proxy.php
источник
Лучшее решение, которое я создал, - это просто использовать Google в качестве ssl-прокси ...
Проверено и работает в Firefox.
Другие методы:
Используйте стороннее устройство, такое как embed.ly (но это хорошо только для хорошо известных http API).
Создайте свой собственный скрипт перенаправления на странице https, которой вы управляете (простое перенаправление javascript на относительной связанной странице должно помочь. Что-то вроде: (вы можете использовать любой язык / метод)
https://example.com
Это имеет iframe ссылку на ...https://example.com/utilities/redirect.html
Который имеет простой скрипт перенаправления JS, как ...document.location.href ="http://thenonsslsite.com";
Кроме того, вы можете добавить RSS-канал или написать какой-нибудь читатель / парсер, чтобы прочитать сайт http и отобразить его на своем сайте https.
Вы можете / должны также порекомендовать владельцу http-сайта создать ssl-соединение. Если ни по какой другой причине, чем это увеличивает SEO .
Если вы не можете заставить владельца http-сайта создать сертификат ssl, наиболее безопасным и постоянным решением будет создание RSS-канала, собирающего необходимый вам контент (возможно, вы на самом деле ничего не «делаете» на http-сайте, то есть скажем не входя ни в какую систему).
Реальная проблема заключается в том, что наличие элементов http внутри сайта https представляет проблему безопасности. Не существует абсолютно кошерных способов обойти эту угрозу безопасности, поэтому вышесказанное - это просто обходные пути.
Обратите внимание, что вы можете отключить эту меру безопасности в большинстве браузеров (самостоятельно, а не для других). Также обратите внимание, что эти «хаки» могут со временем устареть.
источник
Я знаю, что это старый пост, но другим решением было бы использовать cURL, например:
redirect.php:
затем в вашем теге iframe, что-то вроде:
Это просто МИНИМАЛЬНЫЙ пример, чтобы проиллюстрировать идею - он не дезинфицирует URL и не помешает кому-либо еще использовать redirect.php для своих собственных целей. Рассмотрите эти вещи в контексте вашего собственного сайта.
Плюс в том, что он более гибкий. Например, вы можете добавить некоторую проверку данных curl'd $, чтобы убедиться, что это действительно то, что вам нужно, прежде чем отображать их - например, проверить, чтобы убедиться, что это не 404, и иметь свой собственный альтернативный контент, если он готов. является.
Плюс - я немного устал от того, что полагаюсь на перенаправления Javascript для чего-то важного.
Ура!
источник
example.com
SSL. Я встраиваю iframe, сexample.net
которым не имеет SSL. Уexample.com
ссылки есть ссылка,href="https://stackoverflow.com/path/file.html"
и при ее нажатии она открывается, аhttps://example.com/path/file.html
неhttp://example.net/path/file.html
добавить
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
в головуисточник
Вы всегда будете получать предупреждения о заблокированном контенте в большинстве браузеров при попытке отобразить незащищенный контент на странице https. Это сложно, если вы хотите встроить материал с других сайтов, которые не стоят за ssl. Вы можете отключить предупреждения или снять блокировку в своем браузере, но для других посетителей это проблема.
Один из способов сделать это - загрузить сторону контент-сервера, сохранить изображения и другие вещи на свой сервер и отобразить их из https.
Вы также можете попробовать использовать такой сервис, как embed.ly, и получить через них контент. У них есть поддержка для получения контента за https.
источник
Использование Google в качестве SSL-прокси в настоящее время не работает,
Зачем?
Если вы открыли какую-либо страницу из Google, вы найдете
x-frame-options
поле в заголовке.(Цитата из MDN)
Одно из решений
Ниже моя работа вокруг этой проблемы:
Загрузите контент в AWS S3, и он создаст ссылку https для ресурса.
Примечание: установите разрешение для html-файла, чтобы все могли его просматривать.
После этого мы можем использовать его как
src
iframe на веб-сайтах https.источник
Вы можете попробовать очистить все, что вам нужно, с помощью PHP или другого серверного языка, а затем поместить iframe в очищенный контент. Вот пример с PHP:
scrapedcontent.php:
index.html:
источник
Все, что вам нужно сделать, это просто использовать Google в качестве прокси-сервера.
https://www.google.ie/gwt/x?u=[YourHttpLink] .
Это сработало для меня.
Кредиты: - https://www.wikihow.com/Use-Google-As-a-Proxy
источник
Используйте свой собственный обратный прокси-сервер HTTPS-HTTP.
Если в вашем случае используется несколько редко меняющихся URL-адресов для встраивания
iframe
, вы можете просто настроить обратный прокси-сервер для этого на своем собственном сервере и настроить его так, чтобы одинhttps
URL-адрес на вашем сервере соответствовал одномуhttp
URL-адресу на проксируемом сервере. Поскольку обратный прокси-сервер полностью находится на стороне сервера, браузер не может обнаружить, что он «только» общается с прокси-сервером реального веб-сайта, и, таким образом, не будет жаловаться, поскольку соединение с прокси-сервером использует SSL должным образом.Например, если вы используете Apache2 в качестве веб-сервера, см. Эти инструкции для создания обратного прокси-сервера.
источник
mitmproxy
является средством отладки, а не системой проксирования продукции.ngrok
это сервис туннелирования, в основном для серверов разработки, я не понимаю, как это может быть полезно для этого.