chrome打包应用程序不允许在knockout.js中使用unsafe-eval

时间:2014-01-21 15:24:05

标签: javascript google-chrome knockout.js eval content-security-policy

我开发了一个网络应用程序并将其上传到我的Google Chrome应用程序作为解压缩的扩展程序。在执行过程中,我收到以下错误:

  

拒绝将字符串评估为JavaScript,因为'unsafe-eval'是   以下内容安全性中不允许使用脚本源   政策指令:“default-src'self'chrome-extension-resource:”。   请注意,'script-src'未显式设置,因此'default-src'是   用作后备。的 [敲除3.0.0-min.js:54]

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"添加到manifest.json会产生一条消息:

  

'content_security_policy'仅允许扩展和旧版   打包的应用程序,但这是一个打包的应用程序。

这是否意味着我不能使用knockous.js为chrome app store开发应用程序?

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

knockout不使用eval,但它确实使用新的Function()表达式来模板化中的性能优化。

要解决此问题,您必须使用此类型字符串的组件进行Sandbox编码转换。

以下是有关eval沙盒的Chrome应用文档的一部分:

  

然而,我们认识到各种库都使用eval()和   类似于eval的构造,例如用于性能的新Function()   优化和易于表达。模板库是   特别容易出现这种风格。有些人(比如   Angular.js)支持CSP开箱即用,许多流行的框架   还没有更新到与扩展程序兼容的机制   无评估的世界。因此,删除对该功能的支持   事实证明,开发人员的问题比预期更多。

Article link

当然,你总能相信RP Niemeyer推荐的东西。

答案 1 :(得分:0)

使用敲除安全绑定解决问题。

Knockout.js secure binding