jquery - Firefox 操作系统特权应用程序错误 : call to eval() blocked by csp at jquery 1. 9.1

标签 jquery eval content-security-policy firefox-os

我正在通过 jQuery 制作 Firefox 操作系统 webApp。

应用程序类型有权使用 systemXHR。

所以我在 list 文件中定义了权限。应用程序在模拟器上运行良好。

但是当我将应用程序推送到设备并单击任意按钮时,检测到 CSP 错误。

Error: Error: call to eval() blocked by CSP
Source File: app://0cd689b3-a514-4a1c-b1c4-efe372189761/js/jquery-1.9.1.js Line: 603

设备信息

  • 操作系统版本:1.1.0.0.-预发布
  • 平台版本:18.0
  • Git 提交信息:2013-05-01 19:48:40

示例代码是

<div data-role="page" id="signinPageId">
  <script src="js/signin_controller.js"></script>
  <div data-role="header">
    <h3>Sign In</h3>
    <a href="#" data-icon="arrow-l" data-rel="back">Back</a>
  </div>
  <div data-role="content">
    <a id="signinBtn" href="#" data-role="button" class="ui-disabled">Sign In</a>
  </div>
</div>

其他脚本代码在signin_controller.js中有描述

function enableSigninBtn(inputEl){
    if(inputEl.val().length==0){
        $("#signinBtn").addClass("ui-disabled");
    }
    else{
        $("#signinBtn").removeClass("ui-disabled");
    }
}
................
................
$('#signinPageId').on('pagebeforeshow',function(){
    $('#emailForm').bind('keyup',function(){
        if($(':input[type=password]').val().length)
        {
            enableSigninBtn($(this));
        }
    });
    $('#passwordForm').bind('keyup',function(){
        if($(':input[type=email]').val().length)
        {
            enableSigninBtn($(this));
        }
    });
    $('#signinBtn').bind('click',function(){
        initSignIn($(':input[type=email]').val(),$(':input[type=password]').val());
    });
});

所以我在 list 文件中定义了 csp

"csp" : "default-src *; script-src 'self' 'unsafe-eval'; object-src 'none'; style-src 'self' 'unsafe-inline'",
"default_locale": "en",
"type": "privileged",
"permissions": {
    "systemXHR": {
        "description": "Required for comunication with otehr sever"
        }
     }

如何避免此 csp?

最佳答案

您可以在 MDN 上找到有关特权应用 CSP 规则的信息:https://developer.mozilla.org/en-US/docs/Web/Apps/CSP

我认为通过包含 unsafe-eval 会导致此错误,因为您粘贴的 CSP 策略错误正在提示不安全的评估。

关于jquery - Firefox 操作系统特权应用程序错误 : call to eval() blocked by csp at jquery 1. 9.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827181/

相关文章:

javascript - 如何在没有安全问题的情况下运行用户提供的 Javascript(如 jsFiddle、jsBin 等)?

javascript - 这安全吗? eval 或 new 函数用于简单算术表达式

javascript - 内容安全策略是否阻止书签?

javascript - jQuery 停止加粗、下划线等事件

javascript - Bootstrap 崩溃/Bootstrap Modal/stopPropagation 和 HTML 内容超出屏幕高度的问题

javascript - jQuery fullpage js 修复我的 CSS

java - Java中如何将字符串转换为函数?

jquery - jquery 库中的 "Code generation from string disallowed"

javascript - 如何将 Content-Security-Policy 与本地主机文件一起使用

jQuery 在 div 标签内添加图片