【问题标题】:Using Angular JS ng-csp directive to build privileged Firefox OS apps使用 Angular JS ng-csp 指令构建特权 Firefox OS 应用程序
【发布时间】:2013-05-09 16:17:01
【问题描述】:

我是负责构建打包 Firefox OS 应用程序的团队的成员。 由于 Firefox OS 特权应用程序的 CSP 策略受限,我已将 ng-csp 指令添加到应用程序主体:

<body ng-app="the-app" ng-csp>

Firefox OS 特权应用的 CSP 规范是: default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'

根据我从 Firefox OS 设备获得的日志,Angular 似乎正在调用 eval() 或 Function() 构造函数,并且两者都在 Firefox OS 特权应用程序中被阻止,并且应用程序只是停止渲染。

我想知道这是预期行为、已知问题还是我错误地应用了指令?

有类似问题的朋友吗?

提前致谢。

Angular 版本:v1.0.1

错误日志:

05-07 19:31:10.048: ERROR/GeckoConsole(1397): [JavaScript Error: "CSP ERROR: Couldn't parse invalid source 'unsafe-inline'"] 
05-07 19:31:10.048: ERROR/GeckoConsole(1397): [JavaScript Warning: "CSP WARN: Failed to parse unrecognized source 'unsafe-inline'"] 

05-07 19:31:13.892: ERROR/GeckoConsole(1397): [JavaScript Error: "Error: call to Function() blocked by CSP" {file: "app://788ceebd-a9b7-4a98-a8b0-1ff248e40f52/scripts/vendor/d10639ae.angular.js" line: 6337}] 
05-07 19:31:13.912: ERROR/GeckoConsole(1397): [JavaScript Warning: "CSP WARN:  Directive eval script base restriction violated" {file: "app://788ceebd-a9b7-4a98-a8b0-1ff248e40f52/scripts/vendor/d10639ae.angular.js" line: 6337 column: 0 source: "call to eval() or related function blocked by CSP"}] 

【问题讨论】:

  • CSP 也不允许内联 CSS 或 javascript。 eval 当然是不允许的,但是在 CSP 模式下,angular 不应该使用 eval() 。检查以确保您不使用内联 css / js 是最好的选择。
  • 更多信息。我已经尝试使用和不使用 ng-csp 指令部署应用程序,而没有指令 Firefox OS 粗暴地表示对 eval() 的调用被阻止。使用 ng-csp 时,如果您看到上面的错误是“调用 Function() 被 CSP 阻止”。我的问题是即使在安全模式下,Angular 也使用 Function() 来发挥它的魔力。

标签: angularjs firefox-os


【解决方案1】:

我已设法找出此问题的原因。显然,如果我尝试在应用程序的 $rootscope 中创建观察程序,即使在 CSP 安全模式 (ng-csp) 中,Angular 也会调用 Function 构造函数。我已经在 Angular Google Groups 中发了一个帖子,因为这似乎是一个错误。我在 Angular JS 库中进行了修改,让它在 Firefox OS 设备上运行。帖子链接如下:

link

干杯

【讨论】:

    猜你喜欢
    • 2013-05-23
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    相关资源
    最近更新 更多