Как избежать ошибки смешанного содержания при отображении результата поиска?

Вопрос:
Как я могу включить результаты 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, заключается в том, что это фрейм, который отображает все содержимое веб-страницы. Результаты поиска гармонируют с организацией прочей информации. Таким образом, при выборе ссылки из категории в навигации по странице и выборе результата поиска из результатов настраиваемого поиска выбранный контент отображается в том же месте, в 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.

Небезопасный скрипт в сообщении об ошибке:
www.google.com/jsapi?key=ABQIAAAAdCtw6Xq1Q31YAr7VSQOSvxS5g7WKqCWUBuUdhz3-rUOumR2saRSPGvey2WjYALW7f5_JzakSL3lAEg


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

Я думал, что могут сработать следующие решения:

  • Показать все результаты в виде ссылок https: // (без исключения), чтобы к ним можно было получить доступ независимо от того, установлено ли безопасное соединение с сайтом или нет.

  • Перенаправляйте любые ссылки, по которым щелкнули без https: //, чтобы они загружались в iframe как https: //

  • Измените что-нибудь в страницах и файлах на сервере, чтобы они отображались в результатах поиска только как https: //

  • Измените что-нибудь в скрипте поисковой системы Google, чтобы он анализировал все найденные результаты как https: //

  • Каким-то образом отображать ссылки как http: // при небезопасном просмотре и https: // при безопасном просмотре *

* Я не знаю, насколько это будет жизнеспособным или эффективным


person Robert H    schedule 10.09.2015    source источник


Ответы (1)


Самое надежное решение - перенести весь ваш сайт на https:

  • использовать 301 (постоянное) перенаправление с http на https
  • и активируйте HSTS (если возможно, с includeSubdomains)

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

person Tom    schedule 11.09.2015