Удалите Content-Security-Policy из заголовка ответа в локальной (угловой) - PullRequest
0 голосов
/ 28 октября 2019

У меня проблемы только при локальном запуске приложения.

Похоже, у меня Content-Security-Policy установлено по умолчанию 'none'.

Я недавно мигрировал из Angular 7в Angular 8, чтобы облегчить реализацию отложенной загрузки, но я не понимаю, почему это поместило бы заголовок CSP в default-src 'none' по умолчанию.

Кроме того, некоторое время он работал просто отлично.

Однако, когда я запускаю свое приложение локально, в заголовке ответа я вижу эту строку:

Content-Security-Policy: default-src 'none'

Я также указываю, что эта строка неприсутствует в заголовке ответа в средах разработки и тестирования.

Заголовок ответа на локальном языке:

HTTP/1.1 404 Not Found
X-Powered-By: Express
Access-Control-Allow-Origin: *
Content-Security-Policy: default-src 'none'
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 139
Date: Mon, 28 Oct 2019 16:14:09 GMT
Connection: keep-alive

В других средах заголовок ответа не содержит строку Content-Security-Policy: default-src 'none'.

Кроме того, я пытался добавить эту строку в мой файл index.html:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'"/>

Но это ничего не изменило, возможно, оно переопределенопо http-серверу (Webpack?).

Я полагаю, что в моей разработке и тестированииВ средах My Apache настроено не использовать CSP, поэтому заголовок не включает Content-Security-Policy.

Как я могу сделать это локально? Поскольку это Angular 8, у меня нет доступа к конфигурации Webpack, я думаю, что он обрабатывается в @angular-devkit/build-angular. (Хотя к нему можно получить доступ через плагин, такой как custom-webpack, который я прочитал, но я бы предпочел этого избежать)

Я не думаю, что Angular использует конфигурацию по умолчанию, где Content-Security-Policy: default-src 'none' - этополитика по умолчанию. (по крайней мере, это должно быть self)

Наконец, вот часть файла angular.json, который использовался для сборки локальной конфигурации:

  "configurations": {
    "local": {
      "optimization": true,
      "outputHashing": "none",
      "sourceMap": true,
      "extractCss": true,
      "namedChunks": true,
      "aot": false,
      "extractLicenses": true,
      "vendorChunk": false,
      "buildOptimizer": false
    },

Дайте мне знать, если другойФайл конфигурации (tsconfig, package ...) может быть полезен здесь.

1 Ответ

0 голосов
/ 30 октября 2019

Хорошо, похоже, это вызвано параметром сборки --deployUrl.

Я удалил его из файла angular.json, и ошибка исчезла после перестроения. Поэтому я предполагаю, что Angular добавляет ограничительный заголовок CSP, когда присутствует URL-адрес развертывания.

...