IE11 jquery ajax cache 引发用户未登录的问题

案例现象:页面上有一个按钮事件,需要判断当前用户是否登录,未登录就跳转登录页进行登录操作。但登陆后再次点击该按钮仍然叫我登录,换成Chrome却正常的,百思不得其解?

function isLogin() {
	$.ajax({
		url : path + "/user/isLogin.do",
		success : function(result) {
		if (result.status) {
			window.location = "/user/login.do"
		}else{
			//dosomething
		}
	}});
}

经过IE F12 调试工具发现,在请求/user/isLogin.do的时候,发现浏览器没有携带cookie,大家知道java服务端保存session后,会将jsessionid写入cookie中,服务端拿不到jsessionid的值当然就是未登录。于是将问题转向了cookie。然后增加一个参数进行调试

xhrFields:{
    withCredentials:true
}

其实这个字段是跨域用的,指跨域是否携带cookie,我的项目并非跨域,抱着试一试的心态调试而已。结果还是未解决!通过继续调试发现其他的ajax请求都携带了cookie的,为什么就只有这个不携带?因此查询了ajax的其他参数,发现了cache

function isLogin() {
	$.ajax({
		url : path + "/user/isLogin.do",
		cache:false,
		success : function(result) {
		if (result.status) {
			window.location = "/user/login.do"
		}else{
			//dosomething
		}
	}});
}

cache这个字段默认值为true,当请求参数无变化时,浏览器会直接从缓存中拿数据。是否从缓存中拿数据,其实要看浏览器的设置,不然Chrome为什么是正常的呢!下图就是IE的设置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值