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

React前端无法向Express后端API传递Body对象问题求助

问题:React前端POST请求至Express后端时req.body为空,Postman则正常

使用Postman提交POST请求时,数据可正常存入MongoDB,但通过React前端发送POST请求至Express后端API时,后端的req.body始终为空。

React前端代码

const { name, email, message } = greeting;
const payload = {
  name: name,
  email: email,
  message: message,
};

console.log(payload);

fetch('http://localhost:8080/greetings', {
  method: 'POST',
  mode: 'cors',
  headers: {
    'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': '*',
    // 'Content-Type': 'application/x-www-form-urlencoded',
  },

  body: JSON.stringify(payload),
})
  .then(async function (res) {
    let response = await res.json();
    console.log(response);
  })
  .catch((err) => console.log(err));

Express后端代码

app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));

app.post('/greetings', async (req, res) => {
  const { name, email, message } = req.body;
  console.log(req.body);
  db();
  const saveDocument = new Document({
    name: name,
    email: email,
    message: message,
  });

  await saveDocument
    .save()
    .then((savedDoc) => {
      res.send({ status: 200, mes: 'success', request: req.body });
    })
    .catch((e) => console.log(e));
});

解决方案

1. 后端添加JSON格式请求体解析器

你的后端仅配置了application/x-www-form-urlencoded格式的解析中间件,但前端发送的是application/json格式请求,导致Express无法解析请求体,进而req.body为空。

在后端代码中添加JSON解析中间件:

// 若使用body-parser包
app.use(bodyParser.json());

// 若Express版本≥4.16.0,可直接用内置方法,无需额外安装body-parser
// app.use(express.json());

确保该代码放在app.post('/greetings', ...)之前、app.use(cors())之后。

2. 移除前端请求中的无效响应头

'Access-Control-Allow-Origin': '*'是后端需设置的响应头,前端请求时添加此头无意义,甚至可能干扰请求,建议移除:

headers: {
  'Content-Type': 'application/json',
  // 移除该行
  // 'Access-Control-Allow-Origin': '*',
},

完成上述操作后,后端即可正常解析前端发送的JSON请求体,req.body会包含正确数据,数据也能正常存入MongoDB。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:15