关于IE和edge浏览器中get请求缓存的坑。

主要是在一些使用到cookie的ajax场景中。

比如:Angularjs的$http({"url":url,"method":"GET",withCredentials":true}).success(function(){})

get请求无法得到正确数据的时候,先查看控制台。

如果该请求 from cache 或 来自缓存

你会发现该get请求的请求头为空。

这时就会向服务器发送空请求,导致服务器得不到你的cookie,从而无法根据cookie返回所需信息。

解决方法如下:

1.在链接后面加随机的索引字符串,比如时间戳什么的。写过验证码的都知道这个坑。

以angular为例:

// 时间戳
$http({
    url: myConstant.sqlUrl + "/uid" + "?time=" + (+new Date()),
    method: "GET",
    withCredentials: true,
    // 允许携带Cookie
    headers: {
        "If-Modified-Since": 0
    }
    // 避免get请求缓存
}).success(function (data) {
    $scope.userInfo = data.data;
});
// 随机数
$http({
    url: myConstant.sqlUrl + "/uid" + "?time=" + Math.random(),
    method: "GET",
    withCredentials: true,
    // 允许携带Cookie
    headers: {
        "If-Modified-Since": 0
    }
    // 避免get请求缓存
}).success(function (data) {
    $scope.userInfo = data.data;
});

2.直接在header里写上禁止缓存:{"If-Modified-Since":0}

以angular为例:

$http({
	url: myConstant.sqlUrl + "/uid",
	method: "GET",
	withCredentials: true,
	// 允许携带Cookie
	headers: {
		"If-Modified-Since": 0
	}
	// 避免get请求缓存
}).success(function (data) {
	$scope.userInfo = data.data;
});

3.使用php的header函数

header(‘Cache-Control:no-cache, must-revalidate‘);

  

时间: 2024-12-11 20:13:02

关于IE和edge浏览器中get请求缓存的坑。的相关文章

edge 浏览器中数字显示为链接

在win10 中的Edge浏览器中部分格式的数字显示链接.经过各种搜索找到一篇文章 How to remove phone number link on Iphone? ,通过这篇文章了解 edge 浏览器会自动检测符合规则的数字组合为电话号码,并加上链接的样式. 去掉这个默认的功能,在head 中加入 <meta name="format-detection" content="telephone=no"> MSDN中有一篇文章中专门对此作了介绍.Ph

隐藏的图片在浏览器中的请求

图片在页面中一般会以两种形式出现:img元素或者背景图片. 那么在img或者使用背景图片的元素被隐藏之后,页面加载的时候浏览器会不会发送http请求加载图片呢? 注:隐藏分为两种情况(display:none)和(visibility:hidden) 接下来就对两种情况下不同浏览器的请求情况坐下对比 ①.display:none的情况 ②.visibility: hidden的情况 隐藏的图片在浏览器中的请求

如何在Microsoft Edge浏览器中添加一个Hello World插件

注:本文提到的代码示例下载地址> How to add a Hello World extension to Microsoft Edge Microsoft Edge 随着Win 10一起推出,是微软现在主推的浏览器.Edge 相比较于IE, 有更强的交互性,安全性,提供了更好的用户体验.而且这次Edge浏览器也开始支持浏览器插件喽. Edge 上的插件跟其他Chrome, FireFox等浏览器上的插件类似.但其API还在开发当中,截止到目前,已经可以支持大部分的API了.如果想要看具体的A

angular 做的项目在edge浏览器中报 Error: [$rootScope:inprog] 错误

在其他浏览器中都没有出现这种BUG,之前也没有出现过.即使在EDGE浏览器中,我的电脑上出现,别人的电脑上就没有出现,真奇怪,待解.

Chrome扩展移植到Edge浏览器教程

微软在推出Edge浏览器之初,就把能够使用扩展(extension)作为一个重要功能.在Win10一周年更新版(1607)中,这项功能正式向广大用户推出(当然,Insider用户早就测试了一段时间了).在Build2016上,微软表明,为了简化开发者的工作,正在准备推出一款专用工具,用于将Chrome浏览器的扩展移植到Edge浏览器中. ▲商店中已有的Edge扩展  1.简介     最近,这项工具(Microsoft Edge Extension Toolkit)也面世了.这个工具还挂着一个P

Win10 Edge浏览器关闭兼任列表的方法

2015年7月29日Windows10发布后,深受广大用户的喜爱.其中突出的一项功能莫过于Edge浏览器替代了原来的默认浏览器Internet Explorer.微软为Win10量身定做的全新Edge浏览器肩负着接替IE浏览器的使命,一直备受关爱.不过这款浏览器在Windows10正式版发布一周多以来的表现并不是很突出,甚至有些让人失望.除去内存占用高等性能因素外,"兼容性差"."过分依赖IE浏览器"也是用户不满意的关键因素.在浏览很多网站时,都会出现以下提示: 出

angularJS 在edge浏览器上传文件,无法主动触发ng-click

今天发现的问题 在谷歌浏览器一直运行良好的功能,在edge浏览器不能使用. 代码参考我的另一篇博客:WebAPI Angularjs 上传文件 不能运行的原因 下图红框中的代码在edge浏览器中无法执行,也就不能执行下面的上传文件代码. 解决方案 既然原因找到了,就可以寻找解决方案了,找了一下午,有一篇有用的文章:angular ng-click程序触发,方法 我的解决方案(注意加粗加大的代码[关键哟]) JS代码如下: define(['app'], function (app) { app.

用Ajax请求服务器的图片,并显示在浏览器中(转)

前言 一直在数据库里面存的都是图片在服务器的地址,然后再到浏览器中显示,但是发现两个问题 第一:为了安全起见,js是无法读取本地的图片的,不然你写一个js,岂不是可以获取任何人电脑里面的文件了. 第二:图片存在的是在服务器的硬盘上面,而不是在客户的硬盘里面,所以也是取不到的 后来在网上找方法,找的方法,都是各种转换二进制到xml中,的各种高大上的答案,然后本人又实在太懒了,就自己想了一个方法,就是利用BufferedImage这个类. 开始 首先说说我的思路,就是把本地的图片,加载到内存中,然后

在浏览器中输入 www.baidu.com 后执行的全部过程

现在假设如果我们在客户端(客户端)浏览器中输入http://www.baidu.com,而baidu.com为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作: 1.客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径.客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层. 2.在客户端的传输层,把HTTP会话请求分成报文段,添