1 .现象
在个别机器上突然发生了Chrome访问本公司产品的异常。 本应该通过接口获取的数据没有出现。 以前好好的。 而且,其他机器也在同一版本的Chrome中正常访问。
出现问题的计算机上的Chrome重新安装问题仍然存在,只有重新安装操作系统才能恢复正常。
2 .分析
打开Chrome开发人员工具时,发现一些接口请求一直处于pending状态,进一步分析发现处于pending状态的请求是由fetch和vue-resource发出的,但jquery的ajax请求正常。 (不要问为什么一个系统中存在这么多请求方法-_-)
3 .探索
首先,试着替换为最新版本。
幸运的是,用当前最新版本(v1.3.1)替换vue-resource将是正常的。
对于fetch,由于考虑到与较低版本的Chrome的兼容性,因此使用fetchpolyfill (3359 github.com/github/fetch )而不是Chrome附带的fetch来更新当前版本
于是我开始看fetch polyfill的源代码。
if (响应类型(inxhrsupport.blob ) )。
xhr.responseType='blob '
}
我不知道为什么每台机器的Chrome都有问题,但是因为我们的界面只返回文本数据,所以我们将responseType更改为text解决了问题。
if (响应类型) inxhr ) {
xhr.responseType='text '
}