【问题标题】:How to Avoid a Mixed-Content Error When Displaying a Search Result?显示搜索结果时如何避免混合内容错误?
【发布时间】:2015-09-10 20:44:19
【问题描述】:

问题:
如何在 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/,也会出现“http://”结果。我不想排除这些结果,但我希望它们能够在安全浏览网站时显示出来。


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

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


我的尝试:
我尝试在 Google 搜索引擎 (gse) 设置中专门指定 https:// 并从脚本行 gcse.src =(document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx; 中删除 : 'http'

我查看了它链接到的脚本文件: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:// *

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2012-07-12
      相关资源
      最近更新 更多