当请求状态大于400(我尝试了400423429个状态)时,fetch无法读取返回的json内容。浏览器控制台中将显示以下错误
未捕获(承诺中)TypeError:无法在上执行“json”
“响应”:正文流已锁定
我显示了返回的响应对象的内容,如下所示:
但几个月前我还可以用
我的问题如下:
- 这仅仅是Chrome浏览器的行为还是fetch标准的改变
- 有没有办法得到这些状态的身体内容
我的浏览器版本是Google Chrome 70.0.3538.102(正式版本) (64 位)
我也遇到过这个错误,但发现它与响应状态无关,真正的问题是您只能使用Response.json()
一次,如果您多次使用它,就会发生错误
如下图所示:
fetch('http://localhost:3000/movies)。然后(响应=>{
控制台日志(响应);
if(response.ok){
console.log(response.json());//首先在console.log中使用它
return response.json();//然后再次使用它,就会发生错误
}
因此,解决方案是避免在then
块中多次使用Response.json()