Я пытаюсь разработать Прогрессивное веб-приложение, которое включает в себя внешний JavaScript, внешнюю CSS, библиотеку JQuery и манифеста и сервисного работника.
Я установил Политику безопасности контента, чтобы загрузить их, и язапуск его на localhost и в Google Chrome.
Вот моя HTML-голова:
<head>
<meta charset="UTF-8"/>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' https://*; manifest-src 'self'">
<script src="example.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!-- <script src="jquery.min.js"></script> -->
<link rel="stylesheet" type="text/css" href="example.css">
<link rel="manifest" href="manifest.json">
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js').then(function(registration) {
console.log('Service worker successfully installed. Scope:', registration.scope);
}).catch(function(error) {
console.log('Service worker installation failed:', error);
});
}
</script>
<link rel="icon" href="../images/favicon.ico" type="image/x-icon" />
<title>xxx</title>
</head>
Я бы ожидал, что все будет работать правильно, но вместо этого я получаю эти ошибки, которые противоречат моему объявлению:
Отказался от загрузки сценария 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js', поскольку он нарушает следующую директиву политики безопасности содержимого: "script-src' self '".Обратите внимание, что «script-src-elem» не был задан явно, поэтому «script-src» используется в качестве запасного варианта.
Отказ от выполнения встроенного сценария, поскольку он нарушает следующую директиву политики безопасности содержимого: «script-"Я" ".Для включения встроенного выполнения требуется ключевое слово «unsafe-inline», хеш («xxx») или одноразовый номер («nonce -...»).
Отказался загружать манифест из 'http://localhost:7681/manifest.json', поскольку он нарушает следующую директиву политики безопасности содержимого: "default-src 'none'".Обратите внимание, что «manifest-src» не был задан явно, поэтому «default-src» используется в качестве запасного варианта.
Даже если я включил ключевое слово unsafe-inline, включил загрузку скриптов из httpsи я не объявил "default-src 'none'", поэтому я думаю, что что-то упустил.Что блокирует загрузку моих скриптов?
EDIT
Я понял, что пошло не так: сервер работает на libwebsockets, который по умолчанию использует очень строгую политику безопасности содержимого.Изменяя параметры lws, директивы CSP корректно загружаются из заголовка HTML.