AngularJS ng-csp 指令
实例
改变 AngularJS 关于 "eval" 和内联样式的行为方式:
<!DOCTYPE html><html><script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script><body ng-app="" ng-csp=""><div><p>我的第一个表达式: {{ 5 + 5 }}</p></div><p>通过使用 ng-app 指令,可以改变 AngularJS 执行自己代码的方式。</p><p>我们无法区分两者之间的区别,但 AngularJS 被迫使用另一种计算表达式的方法,这可以将计算时间增加到 30%</p></body></html>
定义与用法
ng-csp 指令用于更改 AngularJS 的安全策略。有了 ng-csp 指令集,AngularJS 将不会运行任何 eval 函数,也不会注入任何内联样式。
将 ng-csp 指令的值设置为 no-unsafe-eval 将阻止 AngularJS 运行任何 eval 函数,但允许注入内联样式。
将 ng-csp 指令的值设置为 no-inline-style,将阻止AngularJS注入任何内联样式,但允许使用eval函数。
在为 Google Chrome Extensions 或 Windows 应用开发应用程序时,必须使用 ng-csp 指令。
注意:ng-csp 指令不影响 JavaScript,但它改变了 AngularJS 的工作方式,这意味着:您仍然可以编写 eval 函数,它们将按预期执行,但 AngularJS 不会运行自己的eval函数。它使用了一种兼容性模式,可以将评估时间降低 30%。
语法
<element ng-csp="no-unsafe-eval | no-inline-style"></element>
参数值
| 值 | 描述 |
|---|---|
| no-unsafe-eval no-inline-style | 该值可以为空,这意味着不允许使用 eval 或 inline 样式 该值可以是所描述的两个值之一 该值可以是两个值,用分号分隔,但其含义与空值相同 |