如何在express和bodyParser中接受app / csp-report作为json?

时间:2016-03-22 20:53:54

标签: javascript json express content-type body-parser

我正在尝试编写一个中间件来接受来自浏览器的CSP报告。浏览器将application/csp-report问题解释为Content-Type。发布的请求是JSON格式。目前,我使用bodyParser.text来接受Content-type。但我认为可能有更好的方法在bodyParser中接受application/csp-report作为JSON。

这就是我现在正在做的事情。

app.use(bodyParser.json());
app.use(bodyParser.text({type: 'application/csp-report'}));

我的问题是如何通过Content-Type application-csp-report接受JSON请求有效负载?

2 个答案:

答案 0 :(得分:5)

因为它实际上是JSON,所以你可以告诉Express这样的事实:

app.use(bodyParser.json({type: 'application/csp-report'}));

但请注意,有些浏览器使用application / csp-report,某些应用程序/ JSON,所以我设置了两个:

app.use(bodyParser.json({type: 'application/json'}));
app.use(bodyParser.json({type: 'application/csp-report'}));

如果有帮助我在这里为(非常简单的)节点报告服务编码:https://www.tunetheweb.com/security/http-security-headers/csp/

答案 1 :(得分:0)

除了@Barry的答案,您还可以更具体地设置端点路径:

app.use('/report-violation', bodyParser.json({ type: 'application/json' }));
app.use('/report-violation', bodyParser.json({ type: 'application/csp-report' }));
app.use('/report-violation', (req, res) => {
  // handle req.body
});