【发布时间】:2021-09-15 16:22:30
【问题描述】:
我正在尝试使用 Pug 在我的应用中呈现图表,如下所示:
block content
h2 Question statistics
.col-lg-12
script(src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js")
.chart-container
canvas#myChart2
script.
var ctx = document.getElementById("myChart2").getContext('2d');
ctx.canvas.parentNode.style.width = '50%'
var idata = [1]
var ilabel = [2]
var myChart = new Chart(ctx, { /* ... etc */
这在一周左右之前加载得很好,但是今天当我尝试访问此功能时,图表不会呈现。 我的控制台中的错误是这样的:
拒绝加载脚本
'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js'因为它违反了以下内容安全政策指令:"script-src 'self'"。请注意,'script-src-elem' 没有明确 设置,所以 'script-src' 用作后备。
和
拒绝执行内联脚本,因为它违反了以下内容 内容安全策略指令:“script-src 'self'”。无论是 'unsafe-inline' 关键字,一个哈希 ('sha256-AklvVxShqs4WBi3vUz7qSiPkes2rSVGoNyoZXYVnSA8='),或随机数 ('nonce-...') 是启用内联执行所必需的。
这是我第一次看到这个错误,我不知道如何解决它。有什么想法吗?
【问题讨论】:
-
使用哪个后端服务?知道哪个组件或模块负责在响应中设置 HTTP 标头特别有趣。你能打开页面的源代码并检查它的标题部分吗?
-
@raina77ow 这是由节点 js 提供的
-
是的,使用 JavaScript 和 HTTP。我理解了。这里重要的是细节。究竟是什么创建了 HTTP 标头?为什么最近变了?
-
特别是代码中是否有
response.setHeader("Content-Security-Policy", ...之类的东西? “真实”服务器是否位于 nginx 或任何其他代理之后? -
不,它只是 res.send('chart.pug')
标签: javascript node.js pug content-security-policy