javascript - 无法加载 jQuery,因为它违反了内容安全策略

标签 javascript node.js express content-security-policy

我在node+express上写了一个服务器。准备渲染页面,使用 Jquery 在 JS 中编写脚本。但由于某种原因,Jquery 无法加载页面。这是一个常见的情况,在我在 WebSockets 上编写 ToDo 应用程序之前,我遇到了同样的错误。问题是什么以及如何解决?请帮助。 错误: 拒绝加载脚本“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js”,因为它违反了以下内容安全策略指令:“script-src 'self'” 。请注意,“script-src-elem”未显式设置,因此“script-src”用作后备。

我尝试添加来自其他来源的不同元标记,但没有帮助。

最佳答案

Content Security Policy这是一个相当大的话题,让我迷惑了一段时间。

我最终使用了helmet ,其中包括定义内容安全策略设置的能力,如下所示:

app.use(
    helmet({
        contentSecurityPolicy: {
            directives: {
                defaultSrc: ["'self'"],
                scriptSrc: ["'self'", "https://maps.googleapis.com", "https://www.google.com", "https://www.gstatic.com"],
                connectSrc: ["'self'", "https://some-domain.com", "https://some.other.domain.com"],
                styleSrc: ["'self'", "fonts.googleapis.com", "'unsafe-inline'"],
                fontSrc: ["'self'", "fonts.gstatic.com"],
                imgSrc: ["'self'", "https://maps.gstatic.com", "https://maps.googleapis.com", "data:", "https://another-domain.com"],
                frameSrc: ["'self'", "https://www.google.com"]
            }
        },
    })
);

我发现使用此语法定义规则的能力对我来说更容易,并帮助我更多地了解内容安全策略。

Helmet express.js security docs中提到还有这个node best practises blog .

我的特殊情况的更多背景记录在答案I posted here中.

关于javascript - 无法加载 jQuery,因为它违反了内容安全策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64086288/

相关文章:

javascript - React Apollo - 进行多个查询

javascript - Nodejs5 和 babel 中的 "unexpected token import"?

mysql - Node.js 使用 tunnel-ssh 建立到远程 mysql 服务器的连接

node.js - Node js,快速删除路径中的文件

Azure 上的 node.js - 您无权查看此目录或页面

javascript - RGB 操作公式

javascript - Chrome 远程调试 - 获取页面通知

执行货币算术的 JavaScript API?

node.js - 在单页应用程序中使用passportJS或everyauth

node.js - 在 Express 中,为什么当发送存储数字而不是字符串的数组项时 res.send() 会抛出错误?