为什么我突然在Firefox中遇到"阻止加载混合活动内容"问题?

App*_*lus 339 security https firefox http mixed-content

今天早上,将我的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"`
Run Code Online (Sandbox Code Playgroud)

除了上面两个中的后者没有被加载导致的其他错误.

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

App*_*lus 406

我发现这个博客帖子清理了一些东西.引用最相关的位:

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

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

但是,如果HTTPS页面包含HTTP内容,则攻击者可以读取或修改HTTP部分,即使主页面是通过HTTPS提供的.当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>
Run Code Online (Sandbox Code Playgroud)

请注意,临时"修复"是单击地址栏左上角的"屏蔽"图标,然后选择"禁用此页面上的保护",尽管出于显而易见的原因建议这样做.

UPDATE:此链接从火狐(Mozilla的)支持的网页也解释,什么是混合内容,并在上面的段落中给出,并实际提供的不论如何显示网页的资料有用:

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

如果您需要允许显示混合内容,您可以轻松地执行此操作:

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

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

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

  • 更好的方法是完全删除协议:`src ="// code.jquery.com ...`.浏览器将使用加载页面的协议. (79认同)
  • 天啊!FF开发团队凭借这个很酷的想法开始了自己的脚步,完全不酷的实施.没有持久性来禁用页面,也没有白名单!(当您了解并信任具有混合内容的网站时) (17认同)
  • @Raad你根本无法信任混合内容的网站.虽然网站所有者可能是无辜的,但所有携带http请求的路由器可能都不是.我会向网站所有者提交错误报告. (6认同)
  • @Raad和那些数百甚至数千个站点正在进行暴露可能包含个人身份信息的标题,这些信息意味着要使用SSL连接进行加密......坦率地说,我不认为FF开发团队是这个不负责任的实体物... (6认同)
  • 当它阻止完全无害的行为时非常令人沮丧.说到拉链!我有一个插件,使用Ziptastic查找您输入的邮政编码的城市和状态到地址表单.这个插件坏了:我想做的就是使用一个宁静的API来获取一个小JSON对象 - 没有骰子.这是浏览器安全的TSA!为了废话,让我们回到裤子吧! (3认同)

Ala*_*rte 129

这意味着您正在通过https呼叫http.您可以src="//url.to/script.js"在脚本标记中使用它,它将自动检测.

或者,src即使您要将其发布到http页面,也可以使用https .这将避免评论中提到的潜在问题.


DRa*_*hal 51

如果没有白名单功能,您必须选择"全部"或"无"选项.您可以完全禁用混合内容阻止.


没有选择

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

在"Awesome Bar"中输入"about:config".如果这是您第一次收到"这可能会使保修失效!" 信息.

是的,你会小心的.是的,你保证!

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


全选

iDevelApp的答案很棒.


小智 24

如果要允许混合内容请求,请将以下标记添加到<meta>标记中.

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)

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

<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
Run Code Online (Sandbox Code Playgroud)

  • 这是一个坏主意吗?安全策略的存在不是有原因的吗? (2认同)

Ale*_*sov 12

只需将HTTP更改为HTTPS就可以解决这个问题。

错误的 :

<script src="http://code.jquery.com/jquery-3.5.1.js"></script>
Run Code Online (Sandbox Code Playgroud)

正确的 :

<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
Run Code Online (Sandbox Code Playgroud)


Bry*_*ang 10

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

初始AJAX URL:" http://XXXXXX.com/Core.svc/ "+ ApiName
更正的AJAX URL:" https://XXXXXX.com/Core.svc/ "+ ApiName,


小智 9

由于安全性,它给出了错误.为此,请在网站网址中使用"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"
Run Code Online (Sandbox Code Playgroud)


Sya*_*r__ 8

我已经设法使用这些解决了这个问题:

对于火狐用户

  1. 打开一个新的选项卡,about:config在地址栏中输入,进入配置页面。
  2. 搜索security.mixed_content.block_active_content
  3. 改成。TRUEFALSE

对于 Chrome 用户

  1. 单击Not Secure WarningURL 旁边的

    不安全警告

  2. 点击Site Settings弹出框

    站点设置

  3. 改成Insecure ContentAllow

    不安全的内容

  4. 关闭并刷新页面


小智 7

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

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)


big*_*ato 5

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