Улучшить документацию Просмотреть исходный код ngCsp
- директива в модуле ng
Включает поддержку CSP (Content Security Policy).
Это необходимо при разработке таких вещей, как расширения Google Chrome или универсальные приложения Windows.
CSP запрещает приложениям использовать eval или Function(string) сгенерированные функции (среди прочего). Для того, чтобы Angular был совместим с CSP, нам нужно сделать только две вещи по-другому:
- не использовать
Functionконструктор для генерации оптимизированных функций получения значений - не встраивать пользовательские таблицы стилей в документ
AngularJS использует Function(string) сгенерированные функции в качестве оптимизации скорости. Применение директивы ngCsp заставит Angular использовать режим совместимости CSP. Когда этот режим включен, AngularJS будет оценивать все выражения на 30% медленнее, чем в режиме без CSP, но ошибки безопасности не будут возникать.
CSP запрещает JavaScript встраивать правила таблиц стилей. В режиме без CSP Angular автоматически включает некоторые правила CSS (например, ngCloak). Чтобы эти директивы работали в режиме CSP, вручную добавьте angular-csp.css.
Angular пытается автоматически определить, активен ли CSP, и автоматически переключает режим безопасного CSP. Однако это автоматическое обнаружение приводит к тому, что в консоли регистрируется ошибка CSP:
Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "default-src 'self'". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
Эта ошибка не является критической, но раздражает. Чтобы предотвратить её вывод, поместите директиву ngCsp на корневой элемент приложения или на тэг скрипта angular.js, который первый встречается в HTML-документе.
Примечание: Эта директива доступна только в форме атрибутов ng-csp и data-ng-csp.
Информация о директиве
- Эта директива выполняется на уровне приоритета 0.
Использование
- как атрибут:
<html> ... </html>
Этот пример показывает, как применить директиву ngCsp к тэгу html.
<!doctype html> <html ng-app ng-csp> ... ... </html>
// Примечание: суффикс .csp в имени примера запускает // режим csp в нашем http-сервере!
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.3.20/docs/api/ng/directive/ngCsp