AngularJS ng-csp 指令

2024年9月26日 | 阅读 2 分钟

AngularJS ng-csp 指令用于打破某些 CSP(内容安全策略)规则。它更改了 AngularJS 的安全策略。

包含 ng-csp 指令的 AngularJS 设置不会运行任何 eval 函数,也不会注入任何内联样式。以下规则会影响 AngularJS

  • unsafe-eval: 此规则禁止应用程序使用 eval 或 Function(string) 生成的函数(以及其他)。 Angular 在 $parse 服务中使用它,以提供评估 Angular 表达式的速度提高 30%。
  • unsafe-inline: 此规则禁止应用程序将自定义样式注入到文档中。 Angular 使用它来包含一些 CSS 规则(例如 ngCloak 和 ngHide)。 要使这些指令在 CSP 规则阻止内联样式时生效,您必须手动链接到 HTML 中的 angular-csp.css。

注意: ng-csp 指令不影响 JavaScript,但它会改变 AngularJS 的工作方式,这意味着:您仍然可以编写 eval 函数,并且它们将按您期望的方式执行,但 AngularJS 不会运行其自己的 eval 函数。 它使用兼容模式,这可能会将评估时间减慢最多 30%。

语法

参数解释

no-unsafe-eval: 其值可以为空,表示不允许使用 eval 或内联样式。

no-inline-style: 该值可以是两个描述值之一。该值可以是两个值,用分号分隔,但这将具有与空值相同的含义。

让我们举一个例子来演示 ng-csp 指令。

请看这个例子

立即测试