You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法发起HTTP POST请求:Node.js登录功能POST请求异常排查

排查登录POST请求失败的问题

我来帮你一步步梳理可能导致无法发起POST请求的原因,结合你给出的代码片段来看:

1. 路由配置不匹配

你在app.js里把POST请求/login指向了indexRouter,但登录的处理逻辑却写在users.js的router.get('/')里——这完全对不上啊!

正确的做法应该是把POST请求路由指向usersRouter,比如:

// app.js里修改POST路由
app.post('/login', usersRouter);

然后在users.js里把处理方法改成POST:

// users.js
router.post('/', function(req, res, next) { 
  // 你的登录逻辑代码
});

如果你的usersRouter是挂载在/users路径下的,那可能需要调整表单的action为/users/login,同时在users.js里定义router.post('/login', ...)。

2. 前端表单配置错误

检查登录页面的表单是否正确设置了请求方法和提交路径:

<form method="POST" action="/login">
  <!-- 用户名、密码输入框 -->
  <input type="text" name="user_name">
  <input type="password" name="password">
  <button type="submit">登录</button>
</form>
  • 确保method是POST(不是默认的GET)
  • 确保action和你后端配置的路由路径一致(比如/login)

3. 缺少POST请求体解析中间件

Express默认不会解析POST请求的请求体,所以如果没配置对应的中间件,req.body会是undefined,就算请求发出去了也拿不到参数。

在app.js里添加以下中间件:

// 解析表单格式的请求体
app.use(express.urlencoded({ extended: true }));
// 如果需要支持JSON格式的请求,也加上这个
app.use(express.json());

额外的安全提示

你的SQL语句直接拼接用户输入,存在严重的SQL注入风险!建议改用参数化查询:

var sql = "SELECT id, first_name, last_name, user_name FROM `users` WHERE `user_name`=? and password = ?";
db.query(sql, [name, pass], function(err, results) {
  // 处理查询结果
});

内容的提问来源于stack exchange,提问作者jdotdoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:16:33