【问题标题】:Chrome iFrame Block HTTPS redirectChrome iFrame 阻止 HTTPS 重定向
【发布时间】:2015-06-24 16:50:00
【问题描述】:

我有一个父站点:https://a.company.com,其中包含一个带有 HTTPS 内容的 iframe (https://b.company.com/foo),到目前为止一切都很顺利。但是,当发生重定向以在同一域上加载不同的路由时,Chrome 会将其作为混合内容错误阻止。 在网络流量中查看请求确认浏览器正在请求https,但 Chrome 仍然以我无法加载混合 (http) 内容为由取消请求。

到目前为止,我的所有搜索都是针对尝试加载混合内容的人,而这里不是这种情况。

作为参考,这是 chrome 错误:

混合内容:“https://a.company/foo”处的页面通过 HTTPS 加载,但请求了不安全的资源“http:/b.company/bar”。此请求已被阻止;内容必须通过 HTTPS 提供。

实际的帧源是https://b.company/foo,它可能重定向到https://b.company/bar。如果页面不重定向,则不会发生错误。

【问题讨论】:

  • 你能说出/显示 Chrome 到底说了什么吗?您尝试加载不是来自同一域的内容可能是个问题。 en.wikipedia.org/wiki/Same-origin_policy
  • “查看网络流量中的请求,确认浏览器正在请求https——请求是一部分……另一部分是,服务器是什么回应。如果它尝试重定向到 HTTP 资源,则可以解释错误。
  • 有没有找到解决这个问题的方法?我在 ha-mim.org/kayitlar 上遇到了完全相同的问题。据我在 .htaccess 中看到的,服务器不应将 HTTPS 链接重定向到 HTTP。
  • 检查web.config.htaccess 并确保没有重写规则重定向到http,然后再次重定向到https。例如,您可能有一条规则从重定向到 http 的域名中删除 www,而另一条规则再次从 http 重定向到 https
  • 您的 ssl 是否同时覆盖子域 a 和子域 b

标签: html redirect iframe https


【解决方案1】:

如前所述:您不得在 HTTPS 服务的网站中加载不安全的 HTTP 内容,因为这会损害安全性。如果您仍然尝试这样做,Chrome 会阻止它并抛出上述错误。

确保您确实通过 HTTPS 请求的第一步是检查 iframe 中的 URL,它应该如下所示:

<iframe src="https://foobar.com"></iframe>
                ↑
          this needs to be HTTPS

现在获取确切的 URL 并将其粘贴到任何浏览器中,以查看有哪些规则。如果您以任何方式被重定向,则可能在重定向之后或之间使用了不安全的 HTTP 连接。他们甚至可能有一个直接的 HTTPS 到 HTTP 规则(不太可能)。还要检查控制台,因为他们也可能会尝试在其 HTTPS 服务页面中加载不安全的内容,这可能会导致您出现错误。如果您找到了其中一件,但您无法访问服务器,那么您的旅程就到此结束,除非您非常想提供该内容,以至于您愿意自己使用 HTTP。

另一方面,如果您有权访问服务器,则可以删除这些重定向或检查它们的配置。由于有许多不同的网络服务器、操作系统和配置,我不会尝试提供一般教程,但使用您选择的搜索引擎应该不难找到。

一般来说:如果您要加载的内容仅通过 HTTPS 提供,它会起作用。

当浏览器中的一切似乎都正常工作(没有可见的重定向)并且您仍然收到错误时,您可以使用Wireshark 或其他工具来记录您的流量。这可能是一个错误配置的 HTTPS,它以某种 Chrome 不喜欢的方式弄乱了握手。将这些日志发布在 SO 上或在 iframe 中分享您要显示的网站,以便我们进一步分析它,因为不太可能有通用解决方案。

【讨论】:

    猜你喜欢
    • 2018-05-23
    • 2018-06-11
    • 2012-11-22
    • 2012-07-09
    • 2019-12-16
    • 2017-05-21
    • 2015-04-21
    相关资源
    最近更新 更多