Node/Express解析的JSON POST不是有效的JSON

Node/Express解析的JSON POST不是有效的JSON,json,node.js,express,Json,Node.js,Express,我使用纯Javascript XMLHttpRequest发出JSON POST请求,但是Express似乎将接收到的JSON封装在一个附加对象中,我如何防止这种情况 我正在使用bodyParser: app.use(bodyParser.json({limit: '50mb'})); 这是发送JSON数据的客户端: var xhr = new XMLHttpRequest(); xhr.open("POST", "https://xxx.my.net/",true); // This he

我使用纯Javascript XMLHttpRequest发出JSON POST请求,但是Express似乎将接收到的JSON封装在一个附加对象中,我如何防止这种情况

我正在使用bodyParser:

app.use(bodyParser.json({limit: '50mb'}));
这是发送JSON数据的客户端:

var xhr = new XMLHttpRequest();
xhr.open("POST", "https://xxx.my.net/",true);

// This header MUST be present for POST requests.
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Accept", "application/json, text/javascript");
xhr.send(JSON.stringify({"hxx":1}));
这是Nodejs/Express中间件:

app.use(function(req, res, next){
    fn.console.log(req.body);
   })
这是console.log输出:

   { '{"hxx":1}': '' }
我知道我可以用以下方法解析身体:

console.log(JSON.parse(Object.keys(req.body)[0]))
但我宁愿不这样做

重要提示
我已经尝试过使用content type=“application/json”,但当我这样做时,请求将变成GET而不是POST,除非我声明“application/x-www-form-urlencoded”浏览器会自动将请求从POST转换为GET。

为什么
application/x-www-form-urlencoded
然后?将内容类型设置为application/json而不是urlencoded,并确保使用的是bodyParser.json()服务器上的中间件。无法设置为“application/json”,因为POST会自动转换为GETTry set内容类型为application/json,然后在服务器端启用cors(如果使用xmlhttprequest)。请遵循本教程。谢谢,cors已经启用,如果您设置了application/json,那么浏览器会将POST转换为GET请求。问题不在于没有收到请求,而在于express正在将收到的JSON转换为对象密钥。