我有一个父网站:https://a.company.com
,其中包含一个带有https内容(https://b.company.com/foo
)的iframe,到目前为止一切都很愉快。但是,当发生重定向以在同一个域上加载不同的路由时,chrome将其阻止为混合内容错误。
在网络流量中查看请求会确认浏览器正在请求https
,但Chrome仍然会取消请求,因为我无法加载混合(http
)内容。
到目前为止,所有搜索都让我想到加载混合内容的人不是这里的情况。
作为参考,这是铬错误: 混合内容:“https://a.company/foo”页面是通过HTTPS加载的,但是请求了一个不安全的资源“http:/b.company/bar”。此请求已被阻止;内容必须通过HTTPS提供。
实际的帧源是https:/b.company/foo,可能会重定向到https:/b.company/bar。如果页面没有重定向,则不会发生错误。
答案 0 :(得分:0)
古老的问题,但仍然有意义,因此我将尽力回答这个问题。
如前所述:不允许在HTTPS服务的网站内加载不安全的HTTP内容,因为这会损害安全性。如果您仍然尝试这样做,Chrome将会阻止它并抛出前面提到的错误。
要确保确实通过https请求,第一步是检查iframe
中的URL,该URL应该如下所示:
<iframe src="https://foobar.com"></iframe>
↑
this needs to be https
现在获取该确切的URL,并将其粘贴到任何浏览器中,以查看制定了哪些规则。如果您以任何方式进行重定向,则可能在重定向之后或之间使用不安全的http连接。他们甚至可能有一条直接的https-to-http规则(不太可能)。还请检查控制台,因为他们可能还会尝试在其https服务的页面中加载不安全的内容,这可能会导致您的错误。如果您发现其中一种情况,但是无法访问服务器,那么您的旅程将在这里结束,除非您想提供的内容非常糟糕,以至于您自己愿意使用http。
另一方面,如果您有权访问服务器,则可以删除这些重定向或检查其配置。由于有许多不同的Web服务器,操作系统和配置,因此我不会尝试提供一般性的教程,但是在您选择的搜索引擎中应该不会很难找到它。
通常来说:如果您要加载的内容仅通过https投放,那么它将起作用。
当浏览器中的所有内容似乎都能正常运行(没有可见的重定向)并且您仍然收到错误消息时,可以使用Wireshark或其他工具来记录流量。可能是配置错误的https,以某种Chrome不喜欢的方式弄乱了握手。将这些日志发布到SO上或共享您要在iframe
中显示的网站,以便我们可以对其进行进一步分析,因为不太可能找到通用的解决方案。