2

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


它的结构:
我的 Google 自定义搜索引擎当前搜索“ mydomainname.com/directory/ ”,并选择“包括地址包含此 URL 的所有页面”。它对网站的特定页面进行操作,以搜索指定目录内的页面。在 Websearch Settings 中设置的 Link Target 是与搜索栏在同一页面上的 iframe。

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

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

当然,http:// 的结果也可以用作 https:// 网址。我不知道是什么让页面或文件在搜索结果中显示为“ www. ”或“ https:// ”,因为它们都来自一个安全域。

即使我将要搜索的站点指定为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:// *

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

4

1 回答 1

1

最强大的解决方案是在 https 中迁移您的所有网站:

  • 使用 301(永久)从 http 重定向到 https
  • 并激活 HSTS(如果可能,使用 includeSubdomains)

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

于 2015-09-11T18:26:20.483 回答