如果未指定Content-Type,如何检测POST有效内容的内容类型?

时间:2017-10-05 21:05:16

标签: node.js express content-type

我有一个基于快速的服务器正在运行,它正在使用bodyParser.json()和bodyParser.text()添加到管道中。现在,一些消费者使用JSON有效负载向此服务器的端点发出POST请求,但未在请求标头中指定`content-type:application / json'。这导致bodyParser忽略了请求的主体,因此不包含在响应中。

--- client --- 
fetch('http://myurl/submit', {method: 'POST', body: "{key: value}"}, cb);

--- server ---
app.use(bodyParser.json());
app.post('/submit', (req, res) => {
    // req.body - IS EMPTY!!!
    // I assume it's empty because bodyParser.json() didn't recognise the payload as json as no content-type header was included
})

问题:在我的快递应用程序中,如果没有提供POST主体的内容类型,如何检测?是否有标准库可以接受正文内容并返回其mime类型?

1 个答案:

答案 0 :(得分:2)

来自bodyParser文档:https://www.npmjs.com/package/body-parser

  

bodyParser.json([选项])

     

返回仅解析json并仅查看Content-Type标头与type选项匹配的请求的中间件。此解析器接受正文的任何​​Unicode编码,并支持gzip和deflate编码的自动膨胀。

     

选项

     

json函数接受一个可选的options对象,该对象可能包含以下任何键:

     

严格

     

设置为true时,只接受数组和对象; false时会接受JSON.parse接受的任何内容。默认为true。

将严格设置为false可能会对您有所帮助。