为什么我突然在Firefox中出现“阻止加载混合的活动内容”的问题?


350

今天早上,将Firefox浏览器升级到最新版本(从22升级到23)后,我的后台(网站)的某些关键方面停止工作。

查看Firebug日志,报告了以下错误:

Blocked loading mixed active content "http://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
Blocked loading mixed active content "http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"`

以及由于上述两个中的后者未加载而导致的其他错误。

以上是什么意思,我该如何解决?


嘿,我只有这样做才能解决:使用//www.googl.com/maps的googl.com/maps,它将在不阻止内容的情况下正常工作
Ram Balwad

电子商务链接已失效(错误-找不到您请求的页面)
Soleil-MathieuPrévot18年

Answers:


416

我发现这篇博客文章清除了一些问题。引用最相关的位:

默认情况下,Firefox 23中默认禁用混合活动内容!

什么是混合内容?
当用户访问通过HTTP服务的页面时,他们的连接将打开以进行窃听和中间人(MITM)攻击。当用户访问通过HTTPS服务的页面时,他们与Web服务器的连接将通过SSL进行身份验证和加密,因此可以防止窃听和MITM攻击。

但是,如果HTTPS页面包含HTTP内容,则即使主页面通过HTTPS提供服务,攻击者也可以读取或修改HTTP部分。当HTTPS页面具有HTTP内容时,我们称该内容为“混合”。用户访问的网页仅被部分加密,因为某些内容是通过HTTP未加密地检索的。混合内容阻止程序阻止HTTPS页面上的某些HTTP请求。

就我而言,解决方案是仅确保jquery包含项如下(请注意删除协议):

<link rel="stylesheet" href="https://stackoverflow.com//code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css" type="text/css">
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"></script>

请注意,临时的“修复”方法是单击地址栏左上角的“屏蔽”图标,然后选择“在此页面上禁用保护”,尽管出于明显原因建议这样做。

更新:Firefox(Mozilla)支持页面上的此链接还有助于说明什么构成混合内容,并且如上段所述,实际上提供了如何显示页面的详细信息,无论如何:

大多数网站将继续正常运行,而无需您采取任何措施。

如果需要允许显示混合内容,则可以轻松做到这一点:

单击地址栏中的屏蔽图标“混合内容屏蔽”,然后从下拉菜单中选择“禁用此页面上的保护”。

地址栏中的图标将变为橙色的警告三角警告标识图标,以提醒您正在显示不安全的内容。

要恢复上一个操作(重新阻止混合内容),只需重新加载页面即可。


82
更好的方法是完全删除协议:src="//code.jquery.com...。浏览器将使用页面加载的协议。
Blender

17
天啊!FF开发团队以这种绝妙的主意,完全不明智的实施,使自己立足于脚下。没有禁用页面的持久性,也没有白名单!(关于何时您知道并信任包含混合内容的网站)
Raad 2013年

6
@Raad您根本无法信任包含混合内容的网站。虽然站点所有者可能是无辜的,但所有带有http请求的路由器都可能不是这样。我会向网站所有者提交错误报告。
阿尔法鼠标

6
@Raad和成百上千个站点(即使不是数千个站点)也正在处理中,这些标头可能包含要通过SSL连接加密的个人身份信息...坦率地说,我不认为FF开发团队是不负责任的实体问题...
Assimilater

3
当它阻止完全无害的操作时,非常沮丧。说到拉链!我有一个使用Ziptastic的插件来查找您在地址表格中输入的邮政编码的城市和州。这个插件坏了:我要做的就是使用一个宁静的API来捕获一个微小的JSON对象-没有骰子。这是浏览器安全性的TSA!让我们把裤子放回去,废话!
克里斯·贝克

136

这意味着您正在从https调用http。您可以src="//url.to/script.js"在脚本标签中使用它,它将自动检测。

另外,src即使您要将HTTP发布到http页面,也可以在其中使用use https 。这样可以避免注释中提到的潜在问题。


1
请注意,如果在本地存储的网页上使用它,可能会导致浏览器无法对脚本进行有效搜索,从而大大延迟了页面的加载时间
binaryfunt 2015年

52

如果没有白名单功能,则必须选择“全部”或“什么都不做”。您可以完全禁用混合内容阻止。


没有选择

您将需要永久禁用当前活动配置文件的混合内容阻止。

在“超棒”中,键入“ about:config”。如果这是您第一次来,您将获得“这可能会使您的保修无效!” 信息。

是的,您会小心。是的,你保证!

查找security.mixed_content.block_active_content。将其值设置为false


一切选择

iDevelApp的答案很棒。


1
您知道要在Chrome上启用混合内容吗?
赞2015年

1
@Faizan:从这个答案中可以看出:“在右端的地址栏中应该有一个“屏蔽”图标,您可以单击该图标来运行不安全的内容。”
fuglede 2015年

27

将以下<meta>标签放入<head>文档的部分中,以强制浏览器将不安全的连接(http)替换为安全的连接(https)。如果连接能够使用https,则可以解决混合内容问题。

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

如果要阻止,则将以下标签添加到<head>标签中:

<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">

1
在Chrome中无法使用?在Firefox工作。upgrade-insecure-requests似乎升级了http tp https呼叫。
Aniket Thakur

1
这是一个坏主意吗?是否没有存在安全策略的原因?
medley56 '18


10

由于安全原因给出了错误。为此,请在网站网址中使用“ https”而不是“ http”。

例如 :

   "https://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
   "https://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"

7

在无法访问HTTP呼叫的混合内容https的相关页面中,我们可以在相关页面中添加以下条目,以消除混合内容错误。

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

5

我遇到了同样的问题,因为我购买了CSS模板,并且通过抓取了一个javascript作为外部javascript文件http://whatever.js.com/javascript.js。我在浏览器中转到该页面,然后将其更改为https://whatever...使用SSL并可以使用,因此在我的HTML javascript标签中,我只是更改了要使用的URL httpshttp不起作用。


4

要强制对https协议进行重定向,您还可以在根文件夹的.htaccess中添加此指令

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

3

@Blender评论是最好的方法。千万不要硬编码在代码协议的任何地方,这将是困难的,如果你从移动更改httphttps。由于您需要手动编辑和更新所有文件。

总是更好,因为它可以自动检测协议。

src="//code.jquery.com

2

我发现如果您在将网页包含或与http://www.example.com之类的内容混在一起时遇到问题,可以改用// www .example.com来解决此问题


这对我有用,谢谢。你能告诉我发生了什么吗?
Mantej Singh

2

当我的网站从http转到https时,我遇到了同样的问题。我们为所有将http重定向到https的请求添加了规则。

您需要为站点间请求添加重定向规则,但必须删除外部js / css的重定向规则。


0

我只是通过在标头中添加以下代码来解决此问题:

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

-9

如果您的应用程序服务器是weblogic,则请确保webserver的conf目录中的weblogic.conf文件中存在WLProxySSL ON条目(并确保不应对其进行注释)。然后重新启动Web服务器,它将起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.