问题:今天收到反馈说退出在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