vue项目在IE中自动读取缓存中的数据,不重新发请求

vue项目在IE中自动读取缓存中的数据,不重新发请求

问题描述

近期项目碰到一个bug。就是在IE下,如果先用管理员用户登录网站,进入后台管理(不同用户有不同的权限菜单,通过向后端请求获取)。但是如果之后在不清理缓存的情况下,我再用采购人用户登录进后台时,权限菜单还是管理员的。

分析原因
别的浏览器都正常,拿这肯定是IE浏览器特殊的缓存机制导致的。通过调试发现出现了这样的情况
在这里插入图片描述

这就是问题的根本原因,默认从缓存中获取了数据,而没有重新发请求

解决方法

要解决这个问题,我们只需要保证每个请求都是新的请求就可以了。

我们可以在封装axios时,默认给请求加上时间戳,下面是给get和post请求默认添加时间戳:
在这里插入图片描述

// 添加时间戳       
 if (config.method === 'post') {            
 	config.data = {                
 		...config.data,                
 		t: Date.parse(new Date()) / 1000           
 	}       
 } else if (config.method === 'get') {          
 	 config.params = {               
 	 	 t: Date.parse(new Date()) / 1000,               
 	 	...config.params            
 	}       
 }

需要注意的一点,如果你的post请求参数序列化了,那么你就不能给post请求添加时间戳,因为他会把参数变成一个一个字符,所以一般来说,只给get请求加时间戳就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值