Chrome接⼝请求⼀直是pending状态,但接⼝实际上是正常的
1.现象
个别机器突然出现Chrome访问我司产品异常,本该通过接⼝获取的数据没有呈现,之前都是好好的,⽽且其他机器同样⽤同版本Chrome访问正常。
出现问题的机器重装Chrome问题依然存在,直到重装了操作系统才恢复正常。
2.分析
打开Chrome开发者⼯具发现,部分接⼝请求⼀直处于pending状态,进⼀步分析发现处于pending状态的请求是fetch和vue-resource发出的,jquery的ajax请求却是正常的。(不要问我为什么⼀个系统中存在这么多种请求⽅式-_-)
3.探索
⾸先,尝试⽤最新的版本替换。
幸运的是,vue-resource⽤当前最新版本(v1.3.1)替换后就正常了。
⾄于fetch,因为考虑兼容低版本的Chrome,没有⽤Chrome⾃带的fetch,⽽是⽤了fetch polyfill(),更新了当前最新版本(2.0.3)后问题依然存在。
于是乎我就开始看fetch polyfill的源码了。
if ('responseType' in xhr && support.blob) {
}
虽然看不出为什么会导致个别机器Chrome有问题,但是因为我们的接⼝只返回⽂本数据,我就把responseType改成text,问题解决了!
if ('responseType' in xhr) {
pending
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。