node.js正文解析器对内容类型的错误解释:x-www-form-urlencoded和form-data-JSON

node.js正文解析器对内容类型的错误解释:x-www-form-urlencoded和form-data-JSON,node.js,body-parser,Node.js,Body Parser,我有一个客户的请求 Content-type: Content-Type:application/x-www-form-urlencoded; charset=UTF-8 和以下格式的数据(json): 一个console.log(request.body)为我提供如下内容: { '{"jsonrpc":"2.0","method":"print","params":{"id":"lp0","doc":"<section> <p>': '', 'nbsp;': '',

我有一个客户的请求

Content-type: Content-Type:application/x-www-form-urlencoded; charset=UTF-8
和以下格式的数据(json):

一个console.log(request.body)为我提供如下内容:

{ '{"jsonrpc":"2.0","method":"print","params":{"id":"lp0","doc":"<section>
<p>': '',
'nbsp;': '',
'nbsp;sitedemo': '',
'nbsp;':'',
'&nbsp;</p><br><barcode>':''
'.......}'}
{{“jsonrpc”:“2.0”,“方法”:“打印”,“参数”:{“id”:“lp0”,“文档”:”
“:”,
“nbsp;”:“,
“sitedemo”:“,
“nbsp;”:“,
“


”:“ '.......}'}
json对象的键由行和空值组成

如何检索客户端发送的确切对象(我无法访问客户端)


谢谢。

当客户端在头文件中声明请求主体是URL编码的,但它正在发送JSON时,客户端被破坏

如果确实是这种情况,您需要防止
主体解析器对这些请求进行解码,并手动执行解码

与此相反:

app.use(bodyParser.urlencoded({ extended: true }));
试试这个:

app.use(
  bodyParser.raw({ type : 'application/x-www-form-urlencoded' }),
  function(req, res, next) {
    try {
      req.body = JSON.parse(req.body)
    } catch(e) {
      req.body = require('qs').parse(req.body.toString());
    }
    next();
  }
);

当客户端在头文件中声明请求主体是URL编码的,但它发送的是JSON时,它就被破坏了

如果确实是这种情况,您需要防止
主体解析器对这些请求进行解码,并手动执行解码

与此相反:

app.use(bodyParser.urlencoded({ extended: true }));
试试这个:

app.use(
  bodyParser.raw({ type : 'application/x-www-form-urlencoded' }),
  function(req, res, next) {
    try {
      req.body = JSON.parse(req.body)
    } catch(e) {
      req.body = require('qs').parse(req.body.toString());
    }
    next();
  }
);
“我无法访问客户端”-客户端已损坏。你不应迎合他们的错误。坚持让他们解决问题。“我无法访问客户端”-客户端已损坏。你不应迎合他们的错误。坚持让他们解决问题。