Запретить включение встроенного сценария в сборку svelte, поскольку это нарушает CSP

У меня есть приложение 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.

🤔 А знаете ли вы, что...
Node.js обеспечивает высокую скорость обработки ввода-вывода (I/O), благодаря асинхронной модели.


71
1

Ответ:

Решено

Если вы определяете CSP в SvelteKit, думаю, это должно сработать:

SvelteKit дополнит указанные директивы одноразовыми номерами или хэшами (в зависимости от mode) для любых встроенных стилей и скриптов, которые он генерирует.