Я пытаюсь заставить теги работать в среде 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 *