Javascript 加载脚本和清单违反了内容安全策略指令

Javascript 加载脚本和清单违反了内容安全策略指令,javascript,html,content-security-policy,Javascript,Html,Content Security Policy,我正在尝试开发一个渐进式Web应用程序,它包括一个外部JavaScript、一个外部CSS、JQuery库以及清单和服务工作者 我设置了内容安全策略来加载这些内容,并在localhost和Google Chrome上运行它 这是我的HTML头: <head> <meta charset="UTF-8"/> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; s

我正在尝试开发一个渐进式Web应用程序,它包括一个外部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>

if(导航器中的“serviceWorker”){
navigator.serviceWorker.register('sw.js')。然后(函数(注册){
console.log('已成功安装服务工作程序。作用域:',registration.Scope);
}).catch(函数(错误){
console.log('Service worker安装失败:',错误);
});
}
xxx
我希望一切都能正常运行,但相反,我得到的错误与我的声明不符:

拒绝加载脚本“”,因为它违反了以下内容安全策略指令:“script src‘self’”。请注意,未显式设置“script src elem”,因此将“script src”用作回退

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script src‘self’”。启用内联执行需要'unsafe inline'关键字、哈希('xxx')或nonce('nonce-…')

拒绝从“”加载清单,因为它违反了以下内容安全策略指令:“default src‘none’”。请注意,“manifest src”未显式设置,因此“default src”用作回退

即使我包含了'unsafe inline'关键字,启用了从https加载脚本,并且我没有声明“default src'none'”,所以我认为我遗漏了一些东西。什么阻止了我的脚本加载

编辑

我知道出了什么问题:服务器运行在libwebsockets上,默认情况下,libwebsockets使用非常严格的内容安全策略。更改lws选项后,CSP指令将从HTML头正确加载。

指定了CSP指令的源

引述上述来源:

站点地址可能包含可选的前导通配符(星号“*”)

但是,这仍然需要有效的站点地址。因此,
https://*
不是有效的CSP源,因此被忽略

要允许从所有https站点加载脚本,请执行以下操作:


这里的答案有用吗?@RBrill谢谢你的回答。我已经尝试了所有张贴在那里的解决方案,但我总是得到相同的错误