1. 1. 问题
  2. 2. 解决
IE11兼容问题

问题

最近有个项目在IE11运行出了些问题,主要表现为无法登录。排查了一下原因,主要的登录接口调用成功了,但是紧接着的一个获取用户信息的接口返回了401,导致页面重新跳回了登录界面。

image-20200807102743910

接口请求401的原因主要是没有携带Cookie,而为毛会没带Cookie呢?于是乎,就发现了接口请求后面一个括号:“来自缓存”。

百度了一下原因:

IE浏览器会缓存网页中的GET和XHR的内容,请求方式是GET时,IE浏览器会进行识别。如果该GET请求的URL是第一次请求的话,会请求服务器,从数据库中获取数据;如果不是第一次,则会从缓存中拿到上次该URL获取的数据。无论是什么插件的GET方式请求,IE浏览器都会这样进行处理。

由于不是第一次请求接口,并且手动清除了Cookie,导致了这个接口请求的Cookie没掉了,就401了。

解决

在GET请求的参数中增加随机数或时间戳。