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

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

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

Blocked loading mixed active content "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"` 

以及上述两者中的后者导致的其他错误未被加载。

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

我发现这个博客文章清除了一些东西。 引用最相关的位:

混合活动内容现在在Firefox 23中默认被阻止!

什么是混合内容?
当用户访问通过HTTP提供的页面时,他们的连接对于窃听和中间人(MITM)攻击是开放的。 当用户访问通过HTTPS提供的页面时,他们与Web服务器的连接将通过SSL进行身份验证和加密,从而保护他们免受窃听者和中间人攻击。

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

就我而言,这个决议只是为了确保jquery包含如下(注意删除协议):

 <link rel="stylesheet" href="//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)支持页面的链接在解释什么是混合内容方面也是有用的,并且如上所述,实际上确实提供了如何显示页面的细节:

大多数网站将继续正常工作,而无需采取任何行动。

如果您需要显示混合内容,则可以轻松完成:

点击地址栏中的盾牌图标Mixed Content Shield,然后从下拉菜单中选择“禁用此页面上的保护”。

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

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

这意味着你从https调用http。 您可以在脚本标记中使用src="script.html" ,它会自动检测。

或者你可以在你的src使用https,即使你将它发布到一个http页面。 这将避免评论中提到的潜在问题。

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


没有选择

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

在“棒棒”中输入“about:config”。 如果这是您第一次获得“这可能使您的保修无效” 信息。

是的,你会小心。 是的,你答应!

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


所有的选择

iDevelApp的答案很棒。

如果您通过AJAX使用内部服务,请确保url指向https,这为我清除了错误。

初始AJAX网址:“ http://XXXXXX.com/Core.svc/ ”+ ApiName
更正的AJAX URL:“ https://XXXXXX.com/Core.svc/ ”+ ApiName,

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

例如 :

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

我有这个相同的问题,因为我买了一个CSS模板,它通过http://whatever.js.com/javascript.js抓取了一个JavaScript的外部JavaScript文件。 我去了我的浏览器中的页面,然后将其更改为https://whatever...使用SSL和它的工作,所以在我的HTML JavaScript标记,我只是改变了URL使用https而不是http ,它的工作。

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

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

我发现,如果您在使用http://www.example.com之类的内容包含或混合您的网页时遇到问题,您可以通过将// www .example.com改为

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

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

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