Network显示正常响应但Console中ReadableStream为空的问题
问题解答:Fetch响应body显示为空ReadableStream的原因与解决方法
核心原因
问题不在后端的响应头或发送方式,而是前端对Fetch API的使用逻辑有误:
- Fetch返回的
Response对象中,body是ReadableStream类型的流式数据,无法直接通过console.log查看内容,必须调用专属方法读取流数据后才能获取实际内容。 bodyUsed初始为false,是因为流还未被读取,一旦调用读取方法,该值会自动变为true。- Network标签能看到正常响应,是因为浏览器已完整接收数据,但你的代码并未读取流内容。
前端代码修正
将前端代码修改为以下形式,即可正确获取并打印响应内容:
fetch('url', { method: 'post' }) .then(res => res.json()) // 解析JSON格式的响应流 .then(data => console.log(data)) // 此处打印实际响应内容 .catch(err => console.error('请求出错:', err));
后端代码说明
你的Express后端代码无需修改:
res.json()方法会自动设置Content-Type: application/json响应头,和你手动设置的效果一致,两种方式任选其一即可。- 后端已经正确返回了JSON格式的响应数据,问题完全出在前端的流读取环节。
内容的提问来源于stack exchange,提问作者user19430065
相关产品推荐
相关产品推荐

