AngularJS在chrome扩展中使用eval

时间:2014-08-26 10:08:56

标签: angularjs google-chrome-extension eval

lates AngularJS(1.3 beta 19)使用eval。这在铬镀铬中是禁止的。

如何解决问题 without allowing evals

错误讯息:

  

拒绝将字符串评估为JavaScript,因为'unsafe-eval'是   以下内容安全性中不允许使用脚本源   政策指令:“script-src'self'chrome-extension-resource:”。

堆栈追踪:

angular.js:1011
csp angular.js:1011
(anonymous function) angular.js:23556

更新:请参阅ng-csp https://docs.angularjs.org/api/ng/directive/ngCsp

的文档

OUTDATED:看起来AngularJS无法在chrome扩展中检测到CSP。使用显式ng-csp。链接到AngularJS问题:https://github.com/angular/angular.js/issues/8777

2 个答案:

答案 0 :(得分:6)

引用德米特里所链接的documentation

  

如果CSP处于活动状态并且自动打开,Angular会尝试自动检测   CSP安全模式。但是,此自动检测会触发CSP错误   登录控制台:

     
    

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

  
     

此错误无害但令人讨厌。防止错误显示   up,将ngCsp directive放在应用程序的根元素上   或者在angular.js脚本标记上,以html中首先出现的为准   文档。

答案 1 :(得分:2)

找到解决方案:通过在文档元素上添加ng-csp来强制执行CSP模式。

请参阅ng-csp https://docs.angularjs.org/api/ng/directive/ngCsp

的文档