首页 文章

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

提问于
浏览
314

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

除了上面两个中的后者未被加载之外的其他错误 .

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

13 回答

  • 123

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

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

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

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

    @Blender 评论是最好的方法 . 永远不要在代码中的任何地方对协议进行硬编码,因为如果从 http 移动到 https ,将难以更改 . 因为您需要手动编辑和更新所有文件 .

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

    src="//code.jquery.com
    
  • 0

    由于安全性,它给出了错误 . 为此,请在网站网址中使用“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

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

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

  • 48

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

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

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

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

  • 2

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

  • 1

    如果您的应用服务器是weblogic,那么请确保webserver的conf目录中的weblogic.conf文件中存在WLProxySSL ON条目(并且还要确保它不应该被注释) . 然后重启web服务器,它会工作 .

  • -9

    我发现this blog post清除了一些东西 . 引用最相关的位:

    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>
    

    请注意,临时'fix'是单击地址栏左上角的'shield'图标并选择'Disable Protection on This Page',尽管由于显而易见的原因推荐这是 not .

    更新:来自Firefox(Mozilla)支持页面的This link也可用于解释构成混合内容的内容,并且如上段所述,实际上提供了有关如何显示页面的详细信息,无论如何:

    大多数网站将继续正常工作,您无需采取任何行动 . 如果您需要允许显示混合内容,您可以轻松地执行此操作:单击地址栏中的屏蔽图标Mixed Content Shield,然后从下拉菜单中选择“禁用此页面上的保护” . 地址栏中的图标将更改为橙色警告三角形警告标识图标,以提醒您正在显示不安全的内容 . 要恢复上一个操作(重新阻止混合内容),只需重新加载页面即可 .

  • 386

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


    The Nothing Choice

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

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

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

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


    The All Choice

    iDevelApp的答案太棒了 .

  • 14

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

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

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

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

  • 3

    我有同样的问题,因为我买了一个CSS模板,它通过 http://whatever.js.com/javascript.js 抓取了一个外部javascript文件的javascript . 我在我的浏览器中访问了该页面,然后使用SSL将其更改为 https://whatever... 并且它工作正常,因此在我的HTML javascript标记中,我只是将URL更改为使用 https 而不是 http 并且它有效 .

相关问题