如何在 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-reportContent-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 中间件的正确使用

错误:大多数中间件(如 bodyParser)不再与 Express 捆绑

javascript #nodejs #express #bodyparser访问表单正文