383

今天早上,将我的 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"`

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

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

4

16 回答 16

448

我发现这篇博客文章澄清了一些事情。引用最相关的位:

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>

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

更新:来自 Firefox (Mozilla) 支持页面的此链接在解释什么构成混合内容时也很有用,并且如上段所述,实际上确实提供了有关如何显示页面的详细信息,但无论如何:

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

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

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

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

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

于 2013-08-15T10:47:07.217 回答
148

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

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

于 2013-08-19T18:13:26.067 回答
59

在没有白名单功能的情况下,您必须做出“全部”或“无”的选择。您可以完全禁用混合内容阻止。


一无所有的选择

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

在“Awesome Bar”中,输入“about:config”。如果这是您第一次,您将收到“这可能会使您的保修失效!” 信息。

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

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


所有的选择

iDevelApp的回答很棒。

于 2013-09-24T21:37:19.473 回答
38

将以下<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">
于 2017-11-29T06:59:41.370 回答
14

由于安全原因,它给出了错误。为此,请在网站 url 中使用“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"
于 2016-03-17T10:45:36.577 回答
14

在无法访问混合内容 https 到 http 调用的相关页面中,我们可以在相关页面中添加以下条目并摆脱混合内容错误。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
于 2018-07-04T12:16:45.480 回答
13

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

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

于 2014-12-12T21:58:11.913 回答
10

简单地将HTTP更改为HTTPS为我解决了这个问题。

错误的 :

<script src="http://code.jquery.com/jquery-3.5.1.js"></script>

正确的 :

<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
于 2020-12-08T04:07:25.200 回答
5

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

于 2014-08-03T03:20:32.290 回答
4

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

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
于 2017-02-22T12:25:41.107 回答
4

@Blender评论是最好的方法。切勿在代码中的任何位置对协议进行硬编码,因为如果您从http. https由于您需要手动编辑和更新所有文件。

这总是更好,因为它会自动检测协议。

src="//code.jquery.com
于 2018-05-17T18:32:10.423 回答
2

我发现如果您在包含或混合您的页面与http://www.example.com之类的内容时遇到问题,您可以通过放置//www .example.com 来解决这个问题

于 2015-06-22T23:31:19.070 回答
2

我刚刚通过在标题中添加以下代码解决了这个问题:

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
于 2020-03-17T14:48:46.510 回答
2

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

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

于 2017-11-13T11:30:57.580 回答
0

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

火狐用户

  1. 在地址栏中打开一个新的 TAB 输入about:config以转到配置页面。
  2. 搜索security.mixed_content.block_active_content
  3. 更改TRUEFALSE

对于 Chrome 用户

  1. 点击Not Secure Warning网址旁边的

    不安全警告

  2. 点击Site Settings弹出框

    网站设置

  3. 更改Insecure ContentAllow

    不安全的内容

  4. 关闭并刷新页面

于 2022-01-20T08:44:30.557 回答
-9

如果您的应用服务器是 weblogic,则确保在 webserver 的 conf 目录中的 weblogic.conf 文件中存在 WLProxySSL ON 条目(并确保它不应被注释)。然后重新启动网络服务器,它会工作。

于 2013-10-16T21:30:23.963 回答