Spec-Zone.ru › Angular.js 1.4

Улучшить эту документацию Просмотреть исходный код ngCsp

  1. директива в модуле ng

В Angular есть некоторые возможности, которые могут нарушать определённые правила CSP (Content Security Policy).

Если вы собираетесь реализовать эти правила, то должны указать Angular, чтобы он не использовал эти возможности.

Это необходимо при разработке таких вещей, как расширения Google Chrome или универсальные приложения Windows.

Следующие правила затрагивают Angular:

  • unsafe-eval: это правило запрещает приложениям использовать eval или Function(string) сгенерированные функции (среди прочего). Angular использует это в службе $parse для повышения скорости оценки выражений Angular на 30%.

  • unsafe-inline: это правило запрещает приложениям встраивать пользовательские стили в документ. Angular использует это для включения некоторых правил CSS (например, ngCloak и ngHide). Чтобы эти директивы работали, когда правило CSP блокирует встроенные стили, необходимо вручную ссылаться на angular-csp.css в вашем HTML.

Если вы не предоставите ngCsp, Angular попытается автоматически определить, блокирует ли CSP unsafe-eval, и автоматически отключит эту функцию в службе $parse. Однако эта автоматическая проверка вызывает запись ошибки 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 на элемент HTML-документа, который появляется до тега <script> , загружающего файл angular.js.

Примечание: эта директива доступна только в форме атрибутов ng-csp и data-ng-csp.

Вы можете указать, какие функции Angular, связанные с CSP, следует отключить, задав значение для атрибута ng-csp. Доступны следующие варианты:

  • no-inline-style: это останавливает Angular от вставки CSS-стилей в DOM

  • no-unsafe-eval: это останавливает Angular от оптимизации $parse с помощью unsafe eval строк

Эти значения можно использовать в следующих комбинациях:

  • Отсутствие объявления означает, что Angular предположит, что вы можете использовать встроенные стили, но выполнит проверку unsafe-eval во время выполнения. Например, <body>. Это обратно совместимо с предыдущими версиями Angular.

  • Простой атрибут ng-csp (или data-ng-csp ) сообщит Angular о необходимости отключения как встроенных стилей, так и unsafe eval. Например, <body ng-csp>. Это обратно совместимо с предыдущими версиями Angular.

  • Указание только no-unsafe-eval сообщит Angular о запрете использования eval, но позволит вставлять встроенные стили. Например, <body ng-csp="no-unsafe-eval">.

  • Указание только no-inline-style сообщит Angular о запрете вставки стилей, но позволит использовать eval – автоматическая проверка unsafe eval не будет выполнена. Например, <body ng-csp="no-inline-style">.

  • Указание и no-unsafe-eval и no-inline-style сообщит Angular о запрете вставки стилей и использования eval, что эквивалентно пустому: ng-csp. Например, <body ng-csp="no-inline-style;no-unsafe-eval">

Сводка директивы

  • Эта директива выполняется на приоритетном уровне 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.4.14/docs/api/ng/directive/ngCsp

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API