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

Vue 2.6.1中Fetch发送POST请求时Body为Null的问题排查

解决Fetch POST请求Body为Null的问题

我来帮你排查这个头疼的问题!你遇到的情况其实挺常见的——Postman能正常调用后端接口,但自己用Fetch写的POST请求却让后端拿到Null的Body,大概率是请求头或者数据序列化的细节没处理到位,咱们一步步来:

最可能的原因:缺少Content-Type请求头

Postman在发送JSON格式的请求时,会自动帮你加上Content-Type: application/json这个请求头,告诉后端“我发的是JSON数据”,但Fetch默认不会添加这个头!后端接收到请求后,因为不知道Body的格式,就没法正确解析,自然就得到Null了。

你只需要在requestOptions的headers里补上这个头就行,修改后的代码如下:

function GetBulkOperationData(tbData) {
  const requestOptions = {
    method: 'POST',
    headers: {
      ...authHeader(), // 保留你的认证头
      'Content-Type': 'application/json' // 新增这个关键头
    },
    body: JSON.stringify({ tbData })
  };
  return fetch(`${config.apiUrl}/a/b`, requestOptions)
    .then(handleResponse)
    .then(bulkOperationData => {
      return bulkOperationData;
    });
}

其他需要排查的点

如果加了Content-Type还是不行,咱们再检查这几个地方:

  • 检查authHeader()的返回值:确保它没有覆盖或者移除了Content-Type头,比如可以在代码里console.log(authHeader())看看返回的headers对象里有没有冲突的设置。
  • 确认JSON序列化的正确性:虽然你给出的JSON看起来没问题,但可以在调用fetch前打印console.log(JSON.stringify({ tbData })),看看有没有因为tbData里包含undefined字段导致序列化异常(不过你的示例数据是正常的,这个可以作为备选排查项)。
  • 后端接收逻辑的二次确认:既然Postman能正常工作,这个可能性很低,但如果前面的都试过了,可以确认后端是不是明确要求接收raw格式的JSON,而不是form-data或x-www-form-urlencoded(不过Postman能行的话这个应该没问题)。

先试试加Content-Type头,应该就能解决问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:37:44