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

Node.js/express服务端无法获取客户端POST请求body的问题求助

问题解决方法

按以下步骤排查即可解决该问题:

  • 首先确认express.json()中间件注册位置优先于所有POST路由,推荐全局注册,不要只挂载在单个POST路由下。同时需要注意,如果你的前端运行端口和express端口不一致(比如React默认跑在3000,express跑在5000),必须配置CORS跨域处理,否则预检请求拦截会导致POST参数无法正常传递到服务端:
const express = require("express");
const app = express();
// 全局注册JSON解析中间件,必须放在所有路由前面
app.use(express.json())
// 配置CORS解决跨域问题
const cors = require('cors')
app.use(cors())

app.post("/post", function (req,res){
  console.log(req.body)
  // 必须给请求返回响应,否则前端请求会挂起,也可能影响后续请求的参数传递
  res.send('ok')
})

const port = 5000;
// 原listen回调没有加console.log,启动日志不会正常打印,此处补上即可
app.listen(port, () => console.log(`Server running on port ${port}`));
  • 如果你没有安装cors依赖,先执行安装命令:npm install cors
  • 跨域场景下可以在前端fetch请求中补充credentials配置,避免请求头被拦截:
fetch("/post", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  credentials: 'include',
  body: JSON.stringify(data)
})
  • 如果你是直接打开本地HTML文件(file协议访问)而不是通过静态服务访问,也会出现请求参数丢失的问题,建议把前端代码放在express的静态资源目录下托管:
// 新增静态资源托管,把html文件放在项目根目录的public文件夹下即可访问
app.use(express.static('public'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:21:03