1

我在 Angular 6.2.8 中的项目进展顺利。但是,此错误开始出现在控制台上:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-2P8mXF+NOGY5a6oJ1jDjLINrckn9RgJYdEesn+Qf4rQ=”)或随机数(“nonce-...”)。

有谁知道我该如何解决这个问题?

4

2 回答 2

3

不幸的是,评论中的解决方案:

解决方案 - 我的 dockerfile 将头盔升级到 4.0.0,这显示了问题。作为解决方案,我更改了 dockerfile 并通知了头盔和 espress 版本。示例:运行 cd /srv/opmet/ && npm init -y && npm install --save --no-progress express@4.17.1helmet@3.23.3

并不完美。你只是在地毯下扫垃圾,但耙子还在,你迟早会踩到这些。这不是头盔/快递问题,它只是 RTFM。

问题的关键在于,Helmet 3 默认禁用 CSP,但 Helmet 4 默认启用它以提高安全性。因此,在迁移到头盔 4 后,您默认启用了 CSP。
你肯定有一个内联脚本index.html

<script>
if (global === undefined) {
var global = window;
}
</script>

这就是您在 script-src 中违反 CSP 的原因。
此外,由于以下原因,您在 font-src 指令中违反了 CSP:

<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">

正确的解决方案是:

  • 要么禁用头盔中的 CSP 标头(适用于任何版本):
    app.use(helmet({
    contentSecurityPolicy: false,
    }));

  • 要么制定内容安全策略,以提高您的应用程序的安全性。

于 2020-11-16T19:36:26.740 回答
0

我有同样的错误,我修复它。问题出在字典里。当我将“angular.json”“outputPath”:“dist/projectName”更改为“outputPath”:“dist”时,我在dict文件夹(dict/name-proj/)中有项目文件夹这解决了我的问题

于 2020-11-16T16:44:29.447 回答