我遇到类似于this question和其他几个症状的问题,虽然答案对我没有帮助。我试图通过一个简单的HTML表单向Node应用程序提交密码,但请求正文一直空着。
服务器:
app.use(bodyParser.urlencoded({extended: true}));
router.post('/login', (req, res) => {
console.log(req.body);
console.log(req.headers['content-type']);
});
形式:
<form action="/login" method="post">
<input type="password" id="password">
<button type="submit">Log In</button>
</form>
如果我提交表格,我会得到以下内容:
{} // req.body
'application/x-www-form-urlencoded' // req.headers['content-type']
但是,如果我尝试卷曲端点,我会得到一个非空的req.body
:
$ curl -X POST localhost:5000/login -d 'password=testpw'
// Output
{ password: 'testpw' }
'application/x-www-form-urlencoded'
我做错了什么?
答案 0 :(得分:7)
问题出在您的表单中
<form action="/login" method="post">
<input type="password" id="password">
<button type="submit">Log In</button>
</form>
您的input
没有name
元素
应该是
<input name="password" type="password" id="password">
答案 1 :(得分:0)
如果您的表单设置正确,如已接受的答案所示,但您的请求正文在后端仍为空,您应该检查以确保您的后端使用某种正文解析器。如果您使用的是 express.js,一个示例修复是简单地添加:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({limit: '5000mb', extended: true, parameterLimit: 100000000000}));