当我尝试加载我正在创建的网站时出现以下错误
拒绝加载图像'http://167.71.89.74/favicon.ico http://167.71.89.74/favicon.ico' 因为它违反了以下内容安全策略指令:“default-src 'none'”。请注意,“img-src”未明确设置,因此“default-src”用作后备。
看来我修复错误的尝试更改了 X-Content-Security-Policy,但没有更改 Content-Security-Policy。
我正在使用一个简单的 Express 服务器来加载页面请求。
我发现了这个问题,并向我的 Index.html 添加了一个元标记,但这并没有修复错误。
违反以下内容安全政策指令 https://stackoverflow.com/questions/53369507/violates-the-following-content-security-policy-directive
这是我添加的元标记
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self'">
我还尝试更改我的 Express 代码以执行 setHeader,如该问题的答案中所述
nodeJS https - 无法设置内容安全策略 https://stackoverflow.com/questions/52291783/nodejs-https-unable-to-set-content-security-policy
这是我的 setHeader 代码
app.use(function(req, res, next) {
res.setHeader("Content-Security-Policy", "default-src 'self'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';");
return next();
});
然后我发现Helmet https://helmetjs.github.io/docs/csp/它有一个允许您设置内容安全策略的模块。这是我的头盔代码
const csp = require('helmet-csp');
app.use(csp({
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'"],
connectSrc: ["'self'"],
imgSrc: ["'self'"],
styleSrc: ["'self'"]
}
}));
当我运行以下curl命令时
curl http://167.71.89.74/ --include
我明白了
HTTP/1.1 404 Not Found
Content-Security-Policy: default-src 'none'
X-Content-Security-Policy: default-src 'self'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self'
X-WebKit-CSP: default-src 'self'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self'
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 139
Date: Fri, 09 Aug 2019 19:53:14 GMT
Connection: keep-alive
看起来我的代码正在设置 X-Content-Security-Policy,而不是 Content-Security-Policy。
要修复我的错误,除了 X-Content-Security-Policy 之外,我是否还需要进行其他更改来设置 Content-Security-Policy?