HTTP 网站上出现“阻止加载混合活动内容”

2024-01-24

Problem

我正在开发一个使用 HTTP 协议提供服务的网站。在开发中,我使用 Webpack 及其 webpack-dev-server,它在本地提供页面服务http://localhost:9090.

我很惊讶地在 Firefox 58 控制台中看到以下内容混合内容 https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content关于加载字体文件的错误。这对我来说很奇怪,因为该页面是使用 HTTP 而不是 HTTPS 提供的,并且我认为混合内容错误仅限于 HTTPS 页面。

`Blocked loading mixed active content “http://localhost:9090/b1aa06d82e70bbd5a14259a94c9bbb40.ttf”

我发现错误的根源是嵌入在<iframe>在页面上(<iframe src="https://www.youtube.com/embed/...>)。一旦我删除 YouTube 嵌入,错误就会从控制台中消失。

我不理解这种行为,因为发出此字体请求的不是嵌套的 HTTPS iframe,而是外部 HTTP 页面(顶级浏览上下文)!

Summary

外部页面(顶级浏览上下文)使用 HTTP 提供服务。只有它的嵌入式 iframe 是使用 HTTPS 获取的。外部页面(而不是嵌入的 iframe)对字体文件的 HTTP 请求会在 Firefox 58 控制台中产生混合内容错误。

代码示例

为了给出一个工作示例,我在 Plunker 上创建了 2 支笔,它通过 HTTP 提供服务并通过 HTTP 导入(Plunker 站点本身,而不是我的代码)WOFF 字体 Font Awesome。

这个例子有错误,它通过 HTTPS 嵌入了 YouTube iframe,在 Firefox 58 控制台中产生以下错误:Blocked loading mixed active content “http://plnkr.co/css/font/Font-Awesome-More.woff”.

这个例子没有错误,这是相同的代码,只是删除了 iframe,不会产生错误。

  • 有错误 http://plnkr.co/edit/HgDaTqyA2bKumocwamiu?p=preview
  • 没有错误 http://plnkr.co/edit/iqtq5Io7rzYuKEIGWLtQ?p=preview

问题

  • 如何在使用 HTTP 协议加载的网站上加载混合内容?我认为混合内容只能存在于使用 HTTPS 加载的网站上。通过 HTTPS 请求任何资源(就像 YouTube 嵌入所做的那样)是否会使通过 HTTP 混合内容所需的所有内容?
  • 我该如何修复该错误?我不打算通过 HTTPS 提供网站服务,并且希望我的字体能够在生产 HTTP 服务器上正确加载。

Firefox 似乎缓存了字体,并尝试使用最初传递字体的 URL 来执行对缓存字体的请求。 这会导致混合内容错误。

当我将一个 Web 应用程序部署到运行 HTTPS 的服务器时,我发现了 font Awesome 字体的问题,该应用程序是我在运行 HTTP 的本地服务器上开发的。当请求远程站点 Firefox 报告时:

Blocked loading mixed active content “http://localhost:8080/fontawesome-webfont.woff2”

这给我留下了深刻的印象,因为在该 Web 应用程序中没有对本地主机进行编码的请求。

在您的示例中,字体是通过加载的

http://plnkr.co/css/apps/editor-1.6.1.css http://plnkr.co/css/apps/editor-1.6.1.css

这是url(../font/Font-Awesome-More.woff)

iframe 加载的 CSS 或脚本之一必须尝试再次加载该字体(可能使用动态构建的 URL)。

我对 Firefox 中实现的字体缓存策略一无所知 - 也许他们通过名称来识别字体 - 但我为我的案例找到的解决方案之一是“忘记这个网站” Firefox 历史中的本地主机。

您的情况的解决方案可能是切换到HTTPS https://plnkr.co/edit/HgDaTqyA2bKumocwamiu?p=preview

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 网站上出现“阻止加载混合活动内容” 的相关文章

随机推荐