接口返回200,控制台可以打印返回数据,但是浏览器priview和response中都不显示返回结果,什么情况?

📅 2026/7/5 3:47:06 👁️ 阅读次数 📝 编程学习
接口返回200,控制台可以打印返回数据,但是浏览器priview和response中都不显示返回结果,什么情况?

最近用html+css+jquery写了一个原生项目,请求工具用的是jquery提供的ajax异步请求。在联调登录页面时,发现登录接口返回200状态码,并且能打印出返回值,但是在network中看不到返回结果,如下:

image

后来查询各种资料后发现这竟然是登录接口独有的chrome DevTools经典Bug:

1、登录接口请求成功后,一般都会执行window.location.href或location.reload()进行页面跳转/刷新,页面跳转时,chrome会立刻销毁当前页面的请求上下文,而devTools还未来得及把响应体从内存中持久化,就丢失了对这个请求的引用,所以提示No resource with given identifier found

2、登录接口的响应头/数据触发了chrome的特殊处理。登录接口通常会设置set-Cookie响应头,或者响应体是短JSON,再配合Transfer-Encoding: chunked 或 Content-Encoding: identity,会进一步触发 Chrome DevTools 的响应体丢弃逻辑,导致即使请求没被销毁,也看不到内容。

 

为啥vue项目中没有遇到这样的问题?

答案是vue项目是单页面应用,通过$router.push完成路由跳转,不刷新页面;而原生项目通过window.location.href进行页面跳转,刷新页面。

 

目前我的解决办法是跳转时加定时器,但问题是加到10秒,才能看到返回结果,这样导致登录跳转页面时间太长,不知道大家有什么办法吗?