標籤:
這段時間前後端聯調,解決IE、Google等瀏覽器安全色問題,真是讓人有點焦頭爛額,各種奇葩問題層出不窮,舊問題剛去,新麻煩又來,其中尤其以IE瀏覽器緩衝的問題最多。有若干次都是因為這個緩衝,使得前端的請求沒有實際到達後台,造成304狀態代碼。
經過前端同事和我的各種嘗試,發現有三四種辦法可以針對不同的情況解決這個問題。
方法一:在網上一搜“html設定不緩衝”就會看到大部分的答案都是這個,那就是在之前的一篇博文《同前端聯調遇到的坑(二)》中也說過的當時沒起作用的方法,在html請求時加上如下代碼:
<meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Expires" content="0">
這個方法雖然上次沒有起作用,但是在之前的一些應用中卻是起過作用的。
方法二:因為上邊的方法一在上次的聯調中失效,後來幾經嘗試下便找到了另一個方法,便也是《同前端聯調遇到的坑(二)》中說過的把get請求改為了post請求,這個就沒有什麼多的可說。加入有朋友遇到方法一失效的情況,或許可以一試。
方法三:雖然方法二解決了上次的那個問題,但是當今天在另一個模組再次遇到相似的問題時,卻無奈的發現,不僅方法一失效,方法二竟然也同樣的失效了。於是一番折騰下,再次找到新的解決辦法,那便是在請求對應的後台代碼中加入如下內容:
response.setHeader("Cache-Control", "no-cache");response.setHeader("Pragma", "no-cache");response.setDateHeader("Expires", -1);
方法四:至於方法四,實際上也是在解決方案三遇到的那個問題時一起試過的,效果差不多,那就是當這個請求是get請求是,在url後加上變化的參數值,例如:http://localhost:8080/test?time=123456,這樣瀏覽器每次都會認為是一個全新的請求,便會真正的去到後台。
據前端同事說,應該還有方法五,是在angular的httpserver中加入一段代碼,因為據說有些麻煩,因此便沒有更多的瞭解。
IE瀏覽器因緩衝問題未能成功向後端發送請求的幾個解決辦法