【发布时间】:2019-05-30 22:15:34
【问题描述】:
我在浏览器的控制台中收到以下错误:
内容安全政策:页面的设置阻止了在
http://localhost:3000/favicon.ico(“default-src”)处加载资源。
我在网上查了一下,应该是用下面代码的sn-p解决的:
<meta http-equiv="Content-Security-Policy" content="default-src *;
img-src * 'self' data: https: http:;
script-src 'self' 'unsafe-inline' 'unsafe-eval' *;
style-src 'self' 'unsafe-inline' *">
我将此添加到我的前端 app.component.html 文件(我所有前端视图的父模板),但这没有按预期工作。
我也尝试了多种排列,但无济于事。
我的前端位于localhost:4200,后端位于localhost:3000。
下面是我的后端服务器(中间件)的代码 sn-p:
app.use(cors());
app.options('*',cors());
var allowCrossDomain = function(req,res,next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
}
app.use(allowCrossDomain);
我现在还向我的后端 (Express) 服务器添加了以下中间件:
const csp = require('express-csp-header');
app.use(csp({
policies: {
'default-src': [csp.SELF, 'http://localhost:3000/', 'http://localhost:4200/' ],
'script-src': [csp.SELF, csp.INLINE],
'style-src': [csp.SELF],
'img-src': ['data:', 'favico.ico'],
'worker-src': [csp.NONE],
'block-all-mixed-content': true
}
}));
。 . .但仍未解决问题。
这是截图:
我做错了什么,我该如何解决?
【问题讨论】:
-
您也可以通过 https 服务您的资源。一个文件可以破坏整个链条。
-
原始 CSP 设置在哪里(可能是服务器,在标头中)?如果您只是尝试调试您的策略并添加所有这些额外的允许行,那没关系,但如果这是您计划投入生产的内容,您不妨完全删除 CSP。您应该了解 CSP 的目的是为了正确配置它。 developer.mozilla.org/en-US/docs/Web/HTTP/CSP
标签: express content-security-policy