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
相关产品推荐
相关产品推荐

