У меня есть приложение svelte + typescript. Я создаю приложение с помощью node-adapter и размещаю его на бэкэнде node+express+ts (который также использует шлем). Сборка, созданная Svelte, содержит встроенный скрипт, что приводит к нарушению политики безопасности контента. Это ошибка, отображаемая в консоли браузера:
Отказано в выполнении встроенного сценария, поскольку он нарушает следующую директиву Политики безопасности контента: «script-src 'self'». Для включения встроенного выполнения требуется ключевое слово unsafe-inline, хеш (sha256-owsofOMZa3ZfSXXALEDxpXu6L/jonHMy8m+0p2OoBQM=') или nonce (nonce-...).
Я нашел аналогичную проблему на github , где было найдено решение с помощью часового, о котором я ничего не знаю. Там также говорится о хуках, но я не использую хуки в своем проекте.
Я здесь заблудился и не знаю, как решить эту проблему, кроме как использовать unsafe-inline.
Мой svelte.config.json
:
import adapter from '@sveltejs/adapter-node';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: vitePreprocess(),
kit: {
adapter: adapter()
}
};
export default config;
Я также установил prerender = true
в корне +layout.ts
.
Если вы определяете CSP в SvelteKit, думаю, это должно сработать:
SvelteKit дополнит указанные директивы одноразовыми номерами или хэшами (в зависимости от
mode
) для любых встроенных стилей и скриптов, которые он генерирует.