问题
最近有个项目在IE11运行出了些问题,主要表现为无法登录。排查了一下原因,主要的登录接口调用成功了,但是紧接着的一个获取用户信息的接口返回了401,导致页面重新跳回了登录界面。
接口请求401的原因主要是没有携带Cookie,而为毛会没带Cookie呢?于是乎,就发现了接口请求后面一个括号:“来自缓存”。
百度了一下原因:
IE浏览器会缓存网页中的GET和XHR的内容,请求方式是GET时,IE浏览器会进行识别。如果该GET请求的URL是第一次请求的话,会请求服务器,从数据库中获取数据;如果不是第一次,则会从缓存中拿到上次该URL获取的数据。无论是什么插件的GET方式请求,IE浏览器都会这样进行处理。
由于不是第一次请求接口,并且手动清除了Cookie,导致了这个接口请求的Cookie没掉了,就401了。
解决
在GET请求的参数中增加随机数或时间戳。