当前位置: 首页 > 知识库问答 >
问题:

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

于正志
2023-03-14

我正在尝试开发一个渐进式Web应用程序,它包括一个外部JavaScript、一个外部CSS、JQuery库以及清单和服务工作者。

我设置了内容安全策略来加载这些内容,并在localhost和Google Chrome上运行它。

这是我的超文本标记语言头:

<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 src‘self’”。启用内联执行需要'unsafe inline'关键字、哈希('xxx')或nonce('nonce-…')。

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

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

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

共有1个答案

印子平
2023-03-14

此处指定了CSP指令的源。

引述上述来源:

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

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

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

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' https:; manifest-src 'self'">
 类似资料:
  • 我正在从chargebee.com加载外部脚本,并在控制台中收到此错误消息: [仅报告]拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script src'nonce VVZ V0c=''self'https://maps.googleapis.com https://domain.chargebeestatic.com http://dgkxwewtzsnml.cloudfront.ne

  • 问题内容: 当我尝试将我的应用程序部署到5.0.0以上的android系统的设备上时,我一直收到以下错误消息: 07-03 18:39:21.621:D / SystemWebChromeClient(9132):file:///android_asset/www/index.html:第0行:拒绝加载脚本“ http:// xxxxx ”,因为它违反了以下内容安全策略指令:“ script-sr

  • 当我尝试将我的应用程序部署到Android系统高于5.0.0(Lollipop)的设备上时,我不断收到以下错误消息: 07-03 18:39:21.621:D/SystemWebChromeClient(9132):file:///android_asset/www/index.html: 第0行:拒绝加载脚本的http://xxxxx'因为它违反了以下内容安全策略指令:“script src's

  • 有人能告诉我如何将CSP元标记添加到标题中吗?我尝试将不同的meta标记添加到我的头中,但CSP的错误更多 控制台错误堆栈

  • 我尝试通过cryptojs库加密用户数据,并通过ajax发送到服务器,但控制台显示错误: 拒绝加载脚本'https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js',因为它违反了以下内容安全策略指令:脚本-src'自我'https://apis.google.com'不安全评估'。请注意,没有显式设置脚本-src-

  • 当我将图像上传到我的web应用程序中时,它显示以下错误 拒绝加载图像'