Node.js req.body为空,表示从http post发送的post请求
我从angular应用程序向节点服务器发出post请求。我正在使用FormData和HttpClient发送帖子Node.js req.body为空,表示从http post发送的post请求,node.js,angular,multipartform-data,Node.js,Angular,Multipartform Data,我从angular应用程序向节点服务器发出post请求。我正在使用FormData和HttpClient发送帖子 const sendData = new FormData(); sendData.append('aff', loginName); this.http.post(this.loginURL, sendData, { responseType: 'json' }).subscribe(data => { console.log(data); }); 这是我的服务器端代
const sendData = new FormData();
sendData.append('aff', loginName);
this.http.post(this.loginURL, sendData, { responseType: 'json' }).subscribe(data => {
console.log(data);
});
这是我的服务器端代码:
var bodyParser = require('body-parser');
let socketIO = require('socket.io');
var server = http.createServer(app);
let io = socketIO(server);
const port = process.env.PORT || 3002;
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// parse application/json
app.use(bodyParser.json());
app.post('/login', function (req, res) {
console.log(req.body);
res.status(200).send({ result: "OK" });
});
server.listen(port, () => {
console.log(`started on port: ${port}`);
});
当我控制台记录req.body时,我得到{}。以下是网络的图片:
我试过很多不同的方法。我不知道这为什么不起作用。我有它在其他网站上工作。请帮忙
更新:这对我很有用。。但是仍然很好奇为什么FormData不能正常工作
const sendData = {'username': loginName};
const config = { headers: new HttpHeaders().set('Content-Type', 'application/json') };
this.http.post(this.loginURL, sendData, config).subscribe(data => {
console.log(data);
});
您确定问题不是url吗?将登录名更改为get,然后尝试从web浏览器打开this.loginUrl如果可以的话,那么url就可以了,问题是在某些情况下,如果我在节点服务器中得到响应,它怎么可能是url。log(req.body)显示空括号{}。所以我肯定是在攻击服务器。我认为这与使用formdata有关。@JD333您是否对多部分/表单数据使用了适当的主体解析器?我在服务器上看不到…@JD333试试这个: