瀏覽器重定向(302)次數限制問題

    問題:今天收到反饋說退出在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
  備註查看方法:使用不一樣的瀏覽器訪問  http://maoshuai.sinaapp.com/cnblog/302test.php,查看url參數就是最大限制次數;IE沒法查看url,可經過抓包查看。
    3.怎麼查看?能不能設置?
    答:若是您使用的是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
相關文章
相關標籤/搜索