Express
我在让我的应用程序使用 Nginx 进行报告时遇到了一些困难,我csp violations
从上述答案中学到的两件事是:
- 应该是
POST
方法而不是GET
方法
req.body
包含报告
但是,以上还不够,我一直空着req.body
,我找不到任何其他帖子来描述如何解决它。经过一些研究后,我发现了这篇文章以及一个完全孤立的 github问题,其中dougwilson
给出了将处理csp report
.
对我来说是空的原因req.body
是因为我csp report
在以下配置之后放置了路由处理程序:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
我将csp report
路由处理程序移到这些上面,但是我仍然保持空白,req.body
然后我添加了以下上述csp report
路由处理程序以获取报告req.body
app.use(bodyParser.json({ type: 'application/csp-report' }));
csp report
在请求处理程序上方添加上述行后,Express
了解它应该解析 Content-type 为 的请求application/csp-report
。
也许Express
默认情况下不解析application/csp-report
,添加上面的内容为我解决了这个问题。如果默认Express
解析,我也用谷歌搜索,我发现这个要点声称发送,而 Firefox 发送(我使用的是 Chrome -如果你遇到问题,你也可以包括在内)。application/csp-report
Chrome
application/csp-report
application/json
application/json
FF
所以这就是我的样子app.js
// without following csp-report don't get parsed.
app.use(bodyParser.json({ type: 'application/csp-report' }));
app.get('/vehicle/cspreport', function(req, res) {
res.status(403);
});
app.post('/vehicle/cspreport', function(req, res) {
console.log('csp report > ' + JSON.stringify(req.body));
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
...
OP 发布的已接受答案来自2011
,我想添加一个答案以显示我如何2016
使用以下版本的 Node.js、Express 和 Nginx解决此问题
Node: v4.2.4
Express: 4.13.1
Nginx: 1.8.1