如何在 express 和 bodyParser 中接受 application/csp-report 作为 json?
Posted
技术标签:
【中文标题】如何在 express 和 bodyParser 中接受 application/csp-report 作为 json?【英文标题】:How to accept application/csp-report as json in express and bodyParser? 【发布时间】:2016-07-09 23:12:29 【问题描述】:我正在尝试编写一个中间件来接受来自浏览器的 CSP 报告。浏览器问题application/csp-report
为Content-Type
。发布的请求是 JSON 格式。目前我使用bodyParser.text
来接受该内容类型。但我认为可能有更好的方法在 bodyParser 中接受 application/csp-report
作为 JSON。
这就是我现在正在做的事情。
app.use(bodyParser.json());
app.use(bodyParser.text(type: 'application/csp-report'));
我的问题是如何接受带有 Content-Type
application-csp-report
的 JSON 请求负载?
【问题讨论】:
【参考方案1】:由于它实际上是 JSON,您可以像这样通知 Express:
app.use(bodyParser.json(type: 'application/csp-report'));
但请注意,有些浏览器使用application/csp-report
,有些使用application/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/
【讨论】:
【参考方案2】:除了@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
);
【讨论】:
以上是关于如何在 express 和 bodyParser 中接受 application/csp-report 作为 json?的主要内容,如果未能解决你的问题,请参考以下文章
使用express的bodyParser上传文件,请问如何设置文件大小
如何在中间件中将 bodyParser 上传限制设置为特定路由而不是全局?
Node.js 表达了对 bodyParser 中间件的正确使用
Node.js 表达了对 bodyParser 中间件的正确使用