ajax post 請求 報錯 caution : provisional headers are shown


今天dmap更新部署後,在qa的jpaas測試環境出現如下問題:

執行批量刪除任務時: 


瀏覽器 沒收到任何返回。 直接就悲催了。

但實際上 從業務和數據庫來看,後臺 是執行了,而且執行 成功了。 後臺打印的日誌  一切正常。



在qa測試環境可以復現,但偶爾也不會出現。    本地開發環境無法復現。


聯繫OP排查 tomcat日誌 等一系列,從tomcat日誌看 ,後臺tomcat 訪問日誌 的確是HTTP 200 成功。

故可以判定後臺 收到請求,並且成功處理,返回給前面了。


一籌莫展之際,考慮到是否可以用 rest client 模擬http請求,看下後臺服務到底是否正常。

最後在qq羣裏請教其他前端人員。 有位同學 google 一下 “ provisional headers are shown”,找到如下網頁“ http://stackoverflow.com/questions/21177387/caution-provisional-headers-are-shown-in-chrome-debugger”


故懷疑是 前端 在    ajax返回前 就刷新了頁面 或者 跳轉到 其他頁面去了。

這一下啓發了我,因爲這次 上線,前端fe 的確做了更改。

故我開始排查 js代碼問題,發現了ajax 他設置了 timeout屬性 爲10s。

至此 真相大白,就是 因爲這個 請求後臺處理比較耗時,ajax在等待 10s 發現 後臺 還未返回,就自動斷開了連接。 

故出現奇怪問題。



解決辦法:  

方法1 : 將ajax請求改成 同步。

方法2: 去掉 timeout屬性的設置。


思考: 有時考慮問題 不能侷限於 常規場景,要發散。 可能你以爲 不可能出現問題的 地方 就在哪兒。  真有可能 是其他人挖的坑~



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章