問題:今天收到反饋說退出在IE8下,出現問題,沒法正常完成退出和跳轉。
接着對形成該問題的緣由進行了排查,發現退出的接口使用了跳轉的方式遍歷了一遍白名單域名,來進行退出全部的域。在網上搜索了一下這樣作會有什麼問題,瞭解到不一樣的瀏覽器對重定向的次數也不相同,當重定向次數超過瀏覽器的限制的時候,頁面會出現404訪問不到的現象。那咱們的退出會不會也是這種問題呢?
進而瞭解到ie7 8的重定向次數限制爲10次,通過抓包發現,恰好在第十一次跳轉的時候頁面變成了404,進一步印證了這個猜測。經過改變重定向次數發現,ie8下的退出的問題,正因爲上週五服務端給域名列表里加了一個域名,致使302跳轉次數增長超過ie8的限制,出現了這個問題。
解決方案:減小了一個域名配置,並提供了接口形式的退出方式,進而避免了這個問題。
擴展:既然每一個瀏覽器對重定向次數限制不同,那麼什麼是重定向限制?各主要瀏覽器版本的限制次數是多少?怎麼查看?能不能設置呢?下面進行詳細說明:
1.什麼是重定向限制?
答:重定向限制是指瀏覽器設置,限制你的瀏覽器的次數。會接受「重定向」從一個主機到另外一個。例如,一個網站可能已經從一個服務器或URL移動到另外一個技術或其餘緣由,爲了更方便用戶,網站全部者能夠實施了一項命令,告訴瀏覽器自動走到另外一個位置(重定向)。重定向限制錯誤可能發生無心中當一個web頁面或頁面無心中建立一個循環。例如,若是頁面重定向到自己,或B頁面重定向回頁面,那麼您的web瀏覽器將開始構建鏈接在循環的每一根琴絃,直到超過限制
2.各主要瀏覽器限制次數是多少?
瀏覽器版本 |
限制次數 |
備註 |
chrome |
20 |
這個是測試數據 |
opera |
20 |
|
safari |
15 |
|
firefox |
20 |
第20次就不可用了 |
ie7 8 |
10 |
IE其餘版本,能夠經過下面的測試方法就行測試 |
ie9 |
110 |
從IE9即增長這個值乘以一個係數(11)。由於MaxHttpRedirects的默認值是10,重定向限制自IE9將10 * 11 = 110 |
答:若是您使用的是Firefox,您能夠查看和更改你重定向限制經過輸入「about:config」到地址欄和尋找「network.http.redirection-limit」,而且能夠進行修改。若是是IE,這個限制能夠改變經過添加如下注冊表鍵進行修改。
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
Value: MaxHttpRedirects
Type: DWORD
其餘瀏覽器暫時沒有找到如何設置的方法,若是你知道,歡迎留言告訴我,很是感謝~javascript
總結:儘可能減小使用302進行屢次跳轉,若是必須這樣能夠嘗試使用別的方法就行處理~php
參考文獻:java
http://webdebug.net/2014/02/ie-redirection-limit/web
http://yueyemaitian.iteye.com/blog/1705586chrome
http://stackoverflow.com/questions/9384474/in-chrome-how-many-redirects-are-too-many