我正在尝试编写一个中间件来接受来自浏览器的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请求有效负载?
答案 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
});