首页 文章

使用Angular JS ng-csp指令构建特权Firefox OS应用程序

提问于
浏览
4

我是负责构建打包的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 Version: v1.0.1

Error Log:

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'"]

<-- Dropped CSS tags -->

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"}]

1 回答

  • 4

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

    link

    干杯

相关问题