【问题标题】:Mixed content in Chrome and IEChrome 和 IE 中的混合内容
【发布时间】:2014-11-26 12:14:50
【问题描述】:

在我启用 HTTPS 的网站中,我添加了一个 iframe,它应该显示来自我的其他网站的内容,但它在 https 下不起作用。

<iframe  src="//myothersite.com"></iframe>

在 Firefox 最新版本中一切正常。

在 Chrome 中,iframe 未加载,在控制台中我看到这两个错误

Mixed Content: The page at 'https://mysite' was loaded over HTTPS, but requested an insecure resource 'http://myothersite.com'. 
This request has been blocked; the content must be served over HTTPS.
Failed to load resource: net::ERR_CACHE_MISS

在 IE 内容加载不正确并且我看到一条警告消息;如果我点击允许不安全内容,它会正确加载。

问题是:我如何才能像在 Firefox 中那样使用 IE 和 Chrome(加载混合内容而没有任何警报)?

注意:我没有更改任何浏览器设置。

【问题讨论】:

    标签: google-chrome security iframe https mixed-content


    【解决方案1】:

    实际上 Firefox 也开始这样做了:How to fix a website with blocked mixed content

    这是有道理的。如果用户使用 HTTPS 访问站点时期望获得安全体验,并且他可能不知道在不安全的连接下加载的应用程序的某些部分。这就是浏览器阻止这种不一致的原因。

    您需要在 myothersite.com 上提供 HTTPS。

    【讨论】:

    • 好的,如果 myothersite.com 不是我的网站,这很有意义。但是 myothersite.com 是我的网站,我可以保证安全。我认为浏览器应该提供这样的功能
    • 您不能保证任何事情。如果连接不安全,中间的任何人都可以窃听连接。 IFRAME 就像另一个浏览器选项卡,它们使用自己的连接,在这种情况下是不安全的。
    • 我同意,但为什么 firefox 允许在没有任何警报的情况下使用不安全?
    • Firefox 的错误。在我提供的链接中,它说它正在阻止来自 v23 的混合内容。
    【解决方案2】:

    显然最好不要混合内容以防止 MITM 攻击,但对于那些无法控制 url 的人来说,这应该可以解决问题:

    src="http://linkToUrl.com" 更改为

    src="//linkToUrl.com/script.js"

    【讨论】:

    • 这并不能解决script.js发送子http请求的问题。添加此&lt;meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"&gt;
    • 结合使用 src="//linkToUrl.com/script.js" 并添加建议的元标记 @towry 在这里为我解决了这个问题。我相信这是最好的答案。
    • 我必须在哪里配置这个东西?
    • 拯救我的一天@JisuKim82
    【解决方案3】:

    enter image description here

    当我设置网址时: &lt;a href="http://127.0.0.1:8080/download/1.txt"&gt;&lt;/a&gt; 来自 https 请求,它报告错误: 混合内容:'https://127.0.0.1/index.html' 的页面通过 HTTPS 加载,但请求了不安全的资源 'http://127.0.0.1:8080/download/1.txt'

    This request has been blocked; the content must be served over HTTPS.
    Failed to load resource: net::ERR_CACHE_MISS
    

    当我将target="_blank" 添加到网址:&lt;a target="_blank" href="http://127.0.0.1:8080/download/1.txt"&gt; 时,它起作用了! , 有用! 众所周知,target="_blank" 表示在新窗口或标签页或新请求中打开链接的文档!

    【讨论】:

    • 这是在 iframe 中!
    【解决方案4】:

    很抱歉,这不像其他答案那样技术性强,但是我在像这样链接 jsquery 时遇到了同样的问题,对我来说,只需将 http:// 更改为 https:// 即可解决。它可能不起作用,但它对我有用,它可能对你有用。

    【讨论】:

      【解决方案5】:

      问题是混合内容,浏览器不允许我们这样做。

      您需要更改网址:

      http://example.com
      

      //example.com
      

      【讨论】:

      • 这仅在 example.com 设置为接受 HTTPS 请求时有效。这与将其从 http://example.com 更改为 https://example.com 几乎相同。如果一个失败,他们都会失败。
      【解决方案6】:

      我在使用 CloudFlare 时遇到了其他问题,它不会加载,因为文件已缓存为 http。只需转到 CloudFlare 并在缓存选项卡中“清除所有内容”,或者打开“开发模式”。

      【讨论】:

        【解决方案7】:

        将此代码放入您的 html 文件将解决 Chrome 的这两个错误:

        <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
        

        如果任何解决方案不起作用,请尝试此解决方案。

        【讨论】:

          猜你喜欢
          • 2011-08-04
          • 2016-07-22
          • 2016-04-08
          • 1970-01-01
          • 1970-01-01
          • 2023-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多