我开发了一个网络应用程序并将其上传到我的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开发应用程序?
如何解决这个问题?
答案 0 :(得分:1)
knockout不使用eval,但它确实使用新的Function()表达式来模板化中的性能优化。
要解决此问题,您必须使用此类型字符串的组件进行Sandbox编码转换。
以下是有关eval沙盒的Chrome应用文档的一部分:
然而,我们认识到各种库都使用eval()和 类似于eval的构造,例如用于性能的新Function() 优化和易于表达。模板库是 特别容易出现这种风格。有些人(比如 Angular.js)支持CSP开箱即用,许多流行的框架 还没有更新到与扩展程序兼容的机制 无评估的世界。因此,删除对该功能的支持 事实证明,开发人员的问题比预期更多。
当然,你总能相信RP Niemeyer推荐的东西。
答案 1 :(得分:0)
使用敲除安全绑定解决问题。