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(https://github.com/github/fetch),更新了當前最新版本(2.0.3)后問題依然存在。

於是乎我就開始看fetch polyfill的源碼了。

if ('responseType' in xhr && support.blob) {
        xhr.responseType = 'blob'
}

 雖然看不出為什么會導致個別機器Chrome有問題,但是因為我們的接口只返回文本數據,我就把responseType改成text,問題解決了!

if ('responseType' in xhr) {
        xhr.responseType = 'text'
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM