1、在 IE11 中,如果 GET 请求相同的 URL ,浏览器默认会使用之前的缓存数据,而不是重新请求接口,导致页面数据没有更新
解决方法:在拦截器做处理,请求前增加时间戳,使每个操作都是独立唯一的,这就保证了每一次请求时URL都不同,就成功解决了IE浏览器的缓存问题
代码如下:
const service = axios.create({
baseURL: process.env.BASE_API,
timeout: 5 * 1000 // request timeout
})
axios.defaults.headers.delete['Content-Type'] = 'application/json;charset=UTF-8';
// request interceptor 请求拦截器
service.interceptors.request.use(
config => {
if (store.getters.token) {
config.headers['x-Authorization'] = getToken()
// 时间戳,针对ie浏览器请求一次,不请求获取缓存的bug
var timeArs = parseInt(new Date().getTime() / 1000) + ''
if (config.method === 'post' || config.method === 'put') {
config.data = {
...config.data,
_t: timeArs
}
} else {
/* get 接口 在 IE11 中,如果 GET 请求相同的 URL ,浏览器默认会使用之前的缓存数据,而不是重新请求接口,导致页面数据没有更新
*/
config.params = {
_t: timeArs,
...config.params
}
}
}
return config
}, errorHandler)