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

如何在Express中获取Axios GET请求Payload里的邮箱和密码?

解决方案

推荐方案:改用POST请求(安全规范)

登录属于敏感操作,GET请求的参数会暴露在URL中存在安全风险,优先用POST请求传递数据。

客户端代码修改

将axios.get替换为axios.post,直接把数据作为第二个参数传入:

axios.post("http://localhost:4000/loginUser", { email: enteredEmail, password: enteredPass })

服务器端代码调整

  1. 先确保服务器已启用JSON请求体解析中间件(在入口文件添加):
app.use(express.json());
  1. 修改接口为POST类型,从req.body获取参数:
app.post("/loginUser", async (req, res) => {
  try {
    const { email, password } = req.body;
    // 这里编写你的登录逻辑
  } catch (error) {
    res.status(400).send("invalid credentials");
  }
});

备选方案:用GET请求传递Query参数(不推荐)

如果必须保留GET请求,通过axios的params配置项传递参数,它会自动处理特殊字符(如@)的编码和解码。

客户端代码修改

axios.get("http://localhost:4000/loginUser", {
  params: { email: enteredEmail, password: enteredPass }
})

服务器端代码调整

从req.query中获取参数:

app.get("/loginUser", async (req, res) => {
  try {
    const { email, password } = req.query;
    // 这里编写你的登录逻辑
  } catch (error) {
    res.status(400).send("invalid credentials");
  }
});

问题原因说明

  • GET请求按HTTP规范不携带请求体,你之前用axios.get传入的{ email: ... }属于config的data字段,不会被发送到服务器,因此req.body为空。
  • 手动拼接URL参数时,@这类特殊字符未经过URL编码,导致服务器解析异常;而axios的params配置会自动编码特殊字符,服务器的req.query会自动解码,因此能正常获取邮箱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:21:36