Ошибка без angular: "Отказано в выполнении встроенного скрипта, потому что он нарушает следующую директиву политики безопасности контента:" script-src 'self'"

Мой проект в Angular 6.2.8 шел очень хорошо. Однако эта ошибка начала появляться на консоли:

Отказался от выполнения встроенного сценария, поскольку он нарушает следующую директиву политики безопасности содержимого: "script-src 'self'". Для включения встроенного выполнения требуется ключевое слово 'unsafe-inline', хэш ('sha256-2P8mXF+NOGY5a6oJ1jDjLINrckn9RgJYdEesn+Qf4rQ=') или одноразовый номер ('nonce-...').

Кто-нибудь знает, как я могу это исправить?

3 ответа

К сожалению решение в комментариях:

РЕШЕНИЕ. Мой файл докеров обновлял шлем до версии 4.0.0, что указывает на проблему. В качестве решения я изменил файл докеров и сообщил версии шлема и эспресса. Пример: RUN cd /srv/opmet/ && npm init -y && npm install --save --no-progress express@4.17.1 Helmet@3.23.3

не идеально. Вы просто подсовываете мусор под ковер, но грабли все еще на месте, и вы рано или поздно наступите на них. И это не проблема шлема / экспресса, это просто RTFM.

Суть в том, что Helmet 3 по умолчанию отключает CSP, а Helmet 4 включает его по умолчанию для дополнительной безопасности. Итак, после перехода на шлем 4 у вас по умолчанию включен CSP.
У вас определенно есть встроенный скрипт в index.html:

<script>
if (global === undefined) {
var global = window;
}
</script>

вот почему у вас есть нарушение CSP в script-src.
Также у вас есть нарушение CSP в директиве font-src из-за:

<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">

Правильное решение:

  • либо отключить заголовок CSP в шлеме (будет работать в любых версиях):
    app.use(helmet({
    contentSecurityPolicy: false,
    }));

  • либо разработать политику безопасности контента для большей безопасности вашего приложения.

Решение сработало для меня

      app.use(helmet({
   contentSecurityPolicy: false,
}));

А также CSP в моем index.html (из документов MSN)

      <meta http-equiv="Content-Security-Policy"
      content="default-src 'self'; img-src https://*; child-src 'none';">

У меня такая же ошибка, и я ее исправлю. Проблема была в dict. У меня есть папка проекта в папке dict (dict/name-proj/), когда я меняю "angular.json" "outputPath": "dist/projectName" на "outputPath": "dist". Это решило проблему для меня.

Другие вопросы по тегам