Как настроить CSP-заголовки с помощью express / node.js? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь заставить теги работать в среде express / node.js, но каким-то образом они всегда блокируются политикой безопасности контента.

Я уже пытался использовать несколько узловых модулей, таких как express-csp-header или csp-header, но ни один из них не сработал. Поэтому я вернулся к «нормальной» декларации.

Это вверху моего скрипта server.ts:

app.use((req: any, res: any, next: any) => {
    res.set({
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept",
        "Access-Control-Allow-Methods": "GET, POST, PATCH, DELETE, OPTIONS",
        "Content-Security-Policy": "default-src *",
        "X-Content-Security-Policy": "default-src *",
        "X-WebKit-CSP": "default-src *"
    })
    next();
});

При компиляции через веб-пакет узел работает на локальном хосте с портом 3000.

Он не работал только с "default-src *" или подобным. Я даже пытался объявить каждый тип контента самостоятельно, например,

"default-src * 'self' 'unsafe-inline' 'unsafe-eval'; script-src * 'self' 'unsafe-inline' 'unsafe-eval' localhost:*/*"

Вот часть скрипта после тега body html-страницы: (размещение его в разделе заголовка тоже ничего не изменило)

<script src="scripts/loginFunctions.js"></script>

Может быть, что-то важное: Вывод HTML обслуживается белками (движок шаблонов для экспресса)

app.get('/', (req: any, res: any) => {
    res.render('login');
})

Объявление заголовка в заголовке с метатегами также не сработало. Исходная папка скрипта, на которую я хочу сослаться, обслуживается Express:

app.use(express.static('public'));

Странно то, что это не происходило в моей рабочей среде, где все работало, как ожидалось. Вот мои сообщения об ошибках от консоли браузера (Firefox 66.0.5):

Loading failed for the <script> with source “http://localhost:3000/scripts/loginFunctions.js”.
Content Security Policy: The page's settings blocked the loading of a resource at http://localhost:3000/scripts/loginFunctions.js ("script-src").
Content Security Policy: The page's settings blocked the loading of a resource at inline ("script-src").

И да, я знаю о рисках, но он будет работать локально все время, и даже если он когда-нибудь развернется ... Я просто хочу, чтобы все работало гладко (или работало вообще) во время разработки. Любая помощь о том, как это исправить, будет оценена :) 1025 *

1 Ответ

0 голосов
/ 19 мая 2019

Хорошо, я наконец-то понял это сам. Вот ответ на мою конкретную проблему, на случай, если кто-то столкнется с той же проблемой:

Похоже, что аддон NoScript добавлял блокирующие записи заголовка после того, как они были применены скриптом или в теге <meta> файла HTML. Отключение исправило проблему:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...