Как избежать ошибки смешанного содержимого при отображении результатов поиска?
Вопрос:
Как я могу включить результаты https: и http: с одного домена в систему пользовательского поиска Google, но отображать любой такой результат в iframe с защищенным родительским окном?
Как это структурировано:
Моя система пользовательского поиска Google в настоящее время выполняет поиск "mydomainname.com/directory/" с возможностью "Включить все страницы, адрес которых содержит этот URL". Он работает на определенной странице сайта для поиска страниц в указанном каталоге. Назначение ссылки, установленное в настройках веб-поиска, представляет собой iframe на той же странице, что и панель поиска.
Окно браузера и iframe src находятся в одном безопасном домене. А поскольку все результаты поиска находятся в каталоге в структуре сайта, все они также находятся в этом же домене.
В настоящее время некоторые результаты отображаются как "https://...", а некоторые отображаются как "www...". Очевидно, это создает ошибку смешанного содержимого, когда окно браузера имеет адрес https:// и делается попытка отобразить результат поиска http:// в iframe.
Конечно, результаты http:// также будут работать как https:// urls. Я не знаю, что заставляет страницу или файл появляться в результатах поиска как "www." Или "https://", когда все они происходят из одного безопасного домена.
Результаты "http://" отображаются, даже если я указываю сайт для поиска как https://www.mydomainname.com/directory/
, Я не хочу исключать эти результаты, но я хочу, чтобы они могли отображаться при безопасном просмотре сайта.
Цель:
Итак, главное правило, которое мне нужно обойти, заключается в том, что небезопасные страницы или файлы не могут быть загружены в iframe на защищенной веб-странице. Я, конечно, хочу, чтобы пользователи могли использовать сайт https://, но тогда мне нужно, чтобы поиск работал так, чтобы все возможные результаты поиска были доступны для этих пользователей.
Причина, по которой мне нужен целевой результат для этого iframe, заключается в том, что это фрейм, отображающий все содержимое веб-страницы. Результаты поиска работают в гармонии с организацией другой информации. Таким образом, при выборе ссылки из категории в навигации по странице и выборе результата поиска из пользовательского результата поиска выбранный контент отображается в том же месте, в фрейме.
Что я пробовал:
Я попытался указать https:// специально в настройках поисковой системы Google (gse) и удалить : 'http'
из строки сценария gcse.src =(document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx;
,
Я посмотрел в файле сценария, на который он ссылается: http://cse.google.com/cse.js?cx=012685392925564329750:ghl2znnfada
но я не могу расшифровать, что может потребоваться изменить в нем.
В журнале ошибок на консоли я не вижу ничего значимого, кроме ожидаемой невозможности загружать небезопасные страницы при безопасном просмотре. Но есть ли это, что выглядит (может быть) это актуально? хотя я могу быть совершенно не прав, потому что я тоже не могу расшифровать это:
Mixed Content: The page at
'https://mydomainname.com/directory/index.php' was loaded over HTTPS,
but requested an insecure script 'http://www.google.com/jsapi?
key=ABQIAAAAdCtw6Xq1Q31YAr7VSQOSvxS5g7WKqCWUBuUdhz3-
rUOumR2saRSPGvey2WjYALW7f5_JzakSL3lAEg'. This request has been blocked;
the content must be served over HTTPS.
Небезопасный скрипт из сообщения об ошибке:
http://www.google.com/jsapi?key=ABQIAAAAdCtw6Xq1Q31YAr7VSQOSvxS5g7WKqCWUBuUdhz3-rUOumR2saRSPGvey2WjYALW7f5_JzakSL3lAEg
Предлагаемые пути к решению:
Я открыт для любых методов решения, которые могут быть возможными. Я рассмотрел несколько маршрутов, но не уверен, как правильно их выполнить, или мне не удалось их выполнить.
Некоторые решения, которые я думал, могут работать:
Показать все результаты в виде https:// ссылок (без исключений), чтобы к ним можно было получить доступ как по защищенному соединению с сайтом, так и без него.
Перенаправляйте любые ссылки, которые были нажаты без https:// для загрузки в iframe как https://
Измените что-нибудь о страницах и файлах на сервере, чтобы они отображались в результатах поиска только как https://
Измените что-нибудь в скрипте поисковой системы Google, чтобы он анализировал все найденные результаты как https://
Каким-то образом показывать ссылки как http://, если просмотр небезопасен, и https://, если просмотр безопасен *
* Я не знаю, насколько это жизнеспособно или эффективно
1 ответ
Самое надежное решение - перенести весь ваш сайт в https:
- использовать 301 (постоянное) перенаправление с http на https
- и активируйте HSTS (если возможно с includeSubdomains)
Google займет немного времени, чтобы обновить его индекс, но HSTS автоматически заменит http на https, поэтому вам следует избегать любых проблем со смешанным контентом.