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

Postman请求接口返回正常,前端fetch请求响应body为空是什么原因?

问题原因
  • fetch响应未读取解析:fetch返回的res是Response流式对象,本身不直接携带接口返回的业务数据,直接打印、序列化该对象无法拿到实际响应内容,必须先调用解析方法读取流数据:接口返回JSON格式则调用res.json(),返回普通文本则调用res.text()。
  • 写法逻辑不规范:代码同时混用async/await和.then链式调用,容易出现时序逻辑问题,建议统一使用其中一种异步写法。
  • 可选排查项:如果后端配置了CORS规则,需确认是否配置了Access-Control-Expose-Headers等相关响应头,未正确配置的情况下前端可能无法正常读取响应体内容。
修复后的代码示例
async function login(){
  try {
    const response = await fetch('/auth/login', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        userName: userName,
        password: password
      })
    })
    // 先判断请求是否成功
    if (!response.ok) {
      throw new Error(`请求异常,状态码:${response.status}`)
    }
    // 解析响应体为JSON格式,拿到实际业务数据
    const result = await response.json()
    console.log('接口返回数据:', result)
    // 直接存储token即可,无需序列化整个响应对象
    localStorage.setItem('Authorization', result.token)
  } catch (err) {
    console.log("请求报错:", err)
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:06:08