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

React调用Express登录接口报403错误,已配置cors仍无法解决

问题原因
  • 这个403错误和CORS配置无关:CORS错误会在控制台明确提示跨域头缺失,不会返回403状态码,你遇到的403是后端业务逻辑主动返回的。
  • 最常见的原因是异步请求未完成就提前清空了表单状态:axios.post是异步方法,你调用后立刻执行setEmail("")、setPassword("")的同步代码,很可能请求还没完成参数序列化,状态就被清空,导致后端拿到空的邮箱/密码,匹配不到用户触发403返回。
  • 次要原因:输入的邮箱未注册、密码输入错误,直接触发后端写死的403返回逻辑。
解决方案
  • 调整表单清空逻辑的位置,把清空操作移到请求成功的回调中,确保参数传递完成后再清空状态:
const click = (e) => {
  e.preventDefault();

  console.log("Email:", email);
  console.log("Password:", password);
  console.log("Password:", checkMeOut);

  axios
    .post("http://localhost:5004/api/auth/login", {
      email: email,
      password: password,
    })
    .then(function (response) {
      console.log(response);
      // 请求成功后再清空表单
      setEmail("");
      setPassword("");
      setcheckMeOut("");
    })
    .catch(function (error) {
      console.log(error);
    });
};
  • 后端增加参数校验日志,在login路由开头打印console.log(req.body),确认接收到的邮箱、密码和前端输入一致。
  • 先用接口测试工具直接调用/login接口,传入正确的账号密码,确认接口本身逻辑正常,如果工具调用也返回403,检查数据库中对应的用户记录是否存在、密码加密逻辑是否和注册时一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 13:12:03