我应该如何处理我的网站上的混合内容警告?

我应该如何处理我的网站上的混合内容警告?

我的服务器配置为仅使用 HTTPS;这可以正常工作。

但是当我访问该网站时,我在 Firefox 中收到此消息(在 URL 栏旁边):

Firefox 正在阻止此页面的内容
即使内容被阻止,大多数网站仍能正常运行。

不安全的内容
该网站上的一些未加密元素已被阻止。

网站运行良好,我只是讨厌收到这种消息却不知道它意味着什么。

有什么方法可以确定到底是什么被阻止了?我尝试逐个关闭网站上的某些功能,但找不到导致这种情况的原因。

这仅发生在 Firefox 中。Chrome 不会显示任何错误消息。


Firebug 说:

Blocked loading mixed active content "http://jqueryapi.info/?getsrc=ok&ref=https%3A%2F%2Fexample.com%2F"

这似乎是由 JavaScript 混淆引起的。如果我将 JavaScript 代码更改为正常,则不会发生这种情况。所以现在我想知道有没有办法绕过这个问题?

答案1

你问: ”有没有什么方法可以确定到底是什么被阻止了?“,答案是肯定的。

毫无疑问,检查浏览器出了什么问题的最有效方法是......直接向浏览器询问:-)

最新版本的现代浏览器(如 Firefox 和 Chromium/Chrome)包含一个“开发者工具”,除其他功能外,它还可以报告确切地浏览器通过网络发送了哪些 HTTP 请求,以及对于每个请求,从远程 Web 服务器返回了哪些响应(如果有……)。

在 Chrome/Chromium 世界中,可以通过 CTRL-SHIFT-I 访问开发人员工具,或者,如果您喜欢菜单路径,“工具”=>“开发人员工具”

在 Firefox 中(至少在我的版本 33 中),序列是相同的。

激活“开发者工具”后,您可以选择“网络”选项卡。之后,如果您将浏览器指向原始 URL,则浏览器将报告所有详细信息。

此外,我还建议检查“控制台”(在“开发人员工具”区域内选择适当的“选项卡”),因为它可能包含很多有用的信息,至少当你遇到一些问题时:-)


PS:关于浏览器报告的消息(该网站上的一些未加密元素已被阻止),我敢打赌浏览器会抱怨,因为你正在访问一个受 SSL 保护的 URL,并且从该 URL 返回的 HTML 确实包含对可通过标准 HTTP 访问的其他资源(CSS、图像、脚本等)的引用,没有 SSL 保护。因此,浏览器不通过网络发送清晰的上下文,而是决定“阻止”它们。

答案2

如果任何资源通过 http 加载(例如图像、脚本等),则会出现此警告。如果任何表单向不安全的(http)目的地发送 POST,也会出现此警告。但是,如果此警告仅出现在 Firefox 中,我会首先检查 Firefox 中是否有任何插件或扩展导致此问题。禁用所有扩展并重新加载页面。您还会发现开发人员控制台(F12)可能会告诉您哪些资源正在以不安全的方式加载。Chrome 中确实如此,但我对 Firefox 不太熟悉。

相关内容