Улучшить эту документацию Просмотреть исходный код ngCsp
- директива в модуле ng
Включает поддержку CSP (Политика безопасности контента).
Это необходимо при разработке таких вещей, как расширения Google Chrome.
CSP запрещает приложениям использовать eval или Function(string) сгенерированные функции (среди прочего). Для совместимости Angular с CSP нам нужно только два изменения:
- не использовать
Functionконструктор для генерации оптимизированных получателей значений - не встраивать пользовательские таблицы стилей в документ
AngularJS использует Function(string) сгенерированные функции для оптимизации скорости. Применение директивы ngCsp заставит Angular использовать режим совместимости CSP. В этом режиме AngularJS будет оценивать все выражения на 30% медленнее, чем в режиме без CSP, но не будет генерировать ошибок безопасности.
CSP запрещает встраивание правил CSS в 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 script, какой из них появляется первым в документе HTML.
Примечание: Эта директива доступна только в форме атрибута ng-csp и data-ng-csp.
Информация о директиве
- Эта директива выполняется на уровне приоритета 0.
Использование
- как атрибут:
<html> ... </html>
В этом примере показано, как применить директиву ngCsp к тегу html.
<!doctype html> <html ng-app ng-csp> ... ... </html>
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.2.32/docs/api/ng/directive/ngCsp