显示搜索结果时如何避免混合内容错误?

时间:2015-09-10 20:44:20

标签: ssl iframe https google-custom-search mixed-content

问题:
如何在Google自定义搜索引擎中同时包含https:和http:来自单个域的结果,但是在带有安全父窗口的iframe中显示任何此类结果?

结构如何:
我的Google自定义搜索引擎目前正在搜索" mydomainname.com/directory / "选项" 包括地址包含此URL的所有页面"。它在网站的特定页面上运行,以搜索指定目录中的页面。 “网络搜索设置”中设置的“链接目标”是与搜索栏位于同一页面上的iframe。

浏览器窗口和iframe src都在同一个安全域中。由于搜索结果全部来自站点结构中的目录,因此也都在同一个域中。

目前,某些结果显示为" https:// ... "还有一些出现" www ... "。显然,当浏览器窗口为https://并尝试在iframe中显示http://搜索结果时,会产生混合内容错误。

http://的结果当然也可以作为https:// urls。我不知道是什么让网页或文件在搜索结果中显示为" www。"或" https:// "当它们都来自一个安全的域名时。

" http:// "即使我将要搜索的网站指定为https://www.mydomainname.com/directory/,也会显示结果。我不想排除这些结果,但我希望能够在安全浏览网站时显示这些结果。

目标:
因此,我需要解决的底线规则是,不安全的页面或文件无法加载到安全网页上的iframe中。我显然希望用户能够使用https://网站,但我需要搜索功能,以便为这些用户提供所有可能的搜索结果。

我需要结果的原因'目标是这个iframe是这是显示网页所有内容的框架。搜索结果与其他信息的组织协调一致。这样,从页面导航中的类别中选择链接并从自定义搜索结果中选择搜索结果会将所选内容显示在同一位置iframe中。

我尝试过的事情:
我已尝试在Google搜索引擎(gse)设置中专门指定https://,并从脚本行: '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://点击的所有链接重定向,以https://

  • 的形式加载到iframe
  • 更改服务器上的页面和文件,以便它们仅在搜索结果中显示为https://

  • 更改Google搜索引擎脚本的内容,以便将所有找到的结果解析为https://

  • 以某种方式将链接显示为http://如果浏览不安全,则https://如果浏览安全 *

*我不知道这是多么可行或有效

1 个答案:

答案 0 :(得分:1)

最强大的解决方案是以https:

迁移您的所有网站
  • 使用301(永久)重定向从http到https
  • 并激活HSTS(如果可能,使用includeSubdomains)

Google需要一点时间来更新他的索引,但HSTS会自动将http替换为https,因此您应该避免任何混合内容问题。