测试环境

WIN10,IIS 10,IISExpress 10,Chrome 120,Microsoft Edge 114

网站A 端口7001

只有1个Default.aspx,无前端代码。逻辑很简单,SetCookie用来把客户端传过来的值写入到cookie中,GetCookie用来将客户端传过来的cookie值再返回给客户端。

 1 protected void Page_Load(object sender, EventArgs e)
2 {
3 string Type = Request["Type"];
4 if(Type=="SetCookie")
5 {
6 Response.Cookies.Add(new HttpCookie("CK",Request["Value"]));
7 Response.Write("SetCookie OK");
8 }
9 else if (Type == "GetCookie")
10 {
11 var ck = Request.Cookies["CK"];
12 if(ck==null)
13 {
14 Response.Write("无Cookie");
15 }
16 else
17 {
18 Response.Write(ck.Value);
19 }
20 }
21
22 Response.Headers.Add("Access-Control-Allow-Credentials", "true");
23 Response.Headers.Add("Access-Control-Allow-Origin", "http://localhost:7002");
24 Response.Headers.Add("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,HEAD,OPTIONS");
25 Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type,api_key,Authorization,X-Requested-With");
26 Response.Headers.Add("Access-Control-Allow-Private-Network", "*");
27 }

Page_Load事件代码

网站B 端口7002

只有1个Default.aspx,只有前端代码。SetCookie按钮用ajax将随机数传给服务端,GetCookie按钮用来将cookie发给服务端再返回cookie值

 1 <input id="btnSetCookie" type="button" value="SetCookie" onclick="SetCookie()" />
2 <input id="btnGetCookie" type="button" value="GetCookie" onclick="GetCookie()" />
3
4 <script type="text/javascript">
5 function SetCookie() {
6 $.ajax({
7 url: "http://localhost:7001/Default.aspx?Type=SetCookie&Value=" + parseInt(Math.random() * 100000),
8 type: 'GET',
9 xhrFields: {
10 withCredentials: true
11 }
12 });
13 }
14
15 function GetCookie() {
16 $.ajax({
17 url: "http://localhost:7001/Default.aspx?Type=GetCookie",
18 type: 'GET',
19 xhrFields: {
20 withCredentials: true
21 },
22 });
23 }
24 </script>

正常情况

正常情况下,先点击SetCookie按钮再点击GetCookie按钮,会是下图的情况,GetCookie获取到的值是SetCookie发送的值

异常情况

当两个网站都用IISExpress部署时,就会发生奇怪的事情

第一次操作时,SetCookie成功,但是GetCookie却是上一次的值,给人的感觉是浏览器设置cookie没成功。后面连续又操作了多次,却都是成功的。
我把IISExpress重新部署多次测试发现,上面的情况是偶发的,有时候一直正常,有时候第一次操作会出现设置cookie没成功的情况。
直接访问7001端口的网站,不跨域,就每次都是成功的。

我又换了多种不同的部署方式:

IISExpress部署7001网站A,IIS部署7002网站B,依然会偶发出现。
IIS部署7001网站A,IISExpress部署7002网站B,每次都成功。
都用IIS部署,每次都成功。

使用Chrome和Edge都是一样的效果,网上搜了下也没找到解决方案。

IISExpress 跨域cookie的奇怪问题的更多相关文章

  1. session,ajax 跨域cookie

    什么是Session, 什么是Cookie? Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来 ...

  2. iframe跨域cookie问题

    今天在项目里面遇到了iframe跨域不能写cookie的问题.应用场景是这样的:有A和B两个业务,A要通过iframe的方式嵌入B,但是在ie下A不能通过写cookie的方式记录信息,在firefox ...

  3. CORS跨域cookie传递

    服务端 Access-Control-Allow-Credentials:true Access-Control-Allow-Methods:* Access-Control-Allow-Origin ...

  4. safari跨域cookie的问题

    最近做了一个项目,是将自己公司的H5页面嵌入到其他公司的pc和移动端,采用的方案是iframe,跨域数据传输用的postMessage,最后在联调过程中发现iPhone的微信中无法打开,在 Setti ...

  5. 关于php跨域cookie共享使用方法

    A 服务器所在的域:a1.main.com,A 有应用 main.phpB 服务所在的域:b1.test.com,B 有应用 test.php 1.在 main.php 里设置 cookie 的时候, ...

  6. JavaScript创建读取cookie代码示例【附:跨域cookie解决办法】

    使用JavaScript 原生存取cookie代码示例: var cookie = { set : function(name, value, expires, path, domain, secur ...

  7. vue -- 跨域cookie 丢失的问题

    前端使用了vue-reource的$http进行请求后台接口 登陆完成后,服务端监控发现无法拿到cookie,下面看几张前端控制台监控的图 reqqust Header  没有显示cookie 信息 ...

  8. 关于跨域cookie,在代码无问题下,浏览器set-cookie显示有内容,但浏览器没写入cookie(刷新没有cookie)

    在排除了代码的问题后,如 Domain 不一致,过期时间是基于当前时间增加过期时效的. 在排查返回请求时发现是过期时间的问题,设置的过期时间(Expire)小于请求的时间(Date)时,浏览器就会写不 ...

  9. Angularjs之如何在跨域请求中传输Cookie

    一般情况我们在使用WebApi之类的技术时,都会遇到跨域的问题,这个只需要在服务端做一下处理即可. 如果这些GET或POST请求不需要传递Cookie数据的话,就没什么问题了,但如果需要,那么会发现 ...

  10. JS获取跨域的cookie实例

    如果说JS能实现跨域cookie,你可能觉得不太可能实现,不过事实上,这个还是可以搞定的,不过需要一定的条件才行的哦!具体方案如下: 一共需要3个文件,第一个文件为需要获取cookie的页面,在这个页 ...

随机推荐

  1. axios请求失败,获取接口返回错误信息

    一般vue项目都会对axios进行封装,后台统一规范默认让服务器对所有请求都返回成功,然后在成功的对象里面包装一层对象result,里面也包含code,msg,result信息,前端拿这个result ...

  2. PicGo + Gitee 实现 Markdown 图床

    最近再研究图床,注册的阿里云域名备案还在审批,所以七牛云图床暂时没用,所以试下用PicGo+ Gitee PicGo - 基于 electron-vue 开发的图床工具 PicGo目前支持了微博图床, ...

  3. 数学微积分,学习笔记,等价无穷小的证明:(1+x)^a-1 ~ ax

    \(\lim_{x \to 0} \frac{\sqrt[n]{1+x} -1}{\frac{x}{n} } =1\)的证明 \[\lim_{x \to 0} \frac{\sqrt[n]{1+x} ...

  4. 错误: tensorflow.python.framework.errors_impl.OutOfRangeError的解决方案

    近日,在使用CascadeRCNN完成目标检测任务时,我在使用这个模型训练自己的数据集时出现了如下错误: tensorflow.python.framework.errors_impl.OutOfRa ...

  5. public private protected 的辨析

    一. public 1.作为类内成员的访问修饰符时,由public修饰的成员数据或者成员函数可以在类外(即派生类内以及实例化的对象后)以及类内进行随意访问 可以看到public成员Data在类外是可访 ...

  6. ResponseUtil jackson 转换问题;返回结果与 Bean 之间的转换,推荐使用convertValue

    /** * 若成功往往有data数据 * 示例: * UserBase userBase = new UserBase(); * userBase.setUserName("李昱鑫" ...

  7. Linux--uniq 命令(检查和处理重复行的数据)

    文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个. 使用uniq的时候要注意以下二点1.对文本操作时,它一般会和sort ...

  8. 【.NET】聊聊 IChangeToken 接口

    由于两个月的奋战,导致很久没更新了.就是上回老周说的那个产线和机械手搬货的项目,好不容易等到工厂放假了,我就偷偷乐了.当然也过年了,老周先给大伙伴们拜年了,P话不多讲,就祝大家身体健康.生活愉快.其实 ...

  9. angularjs国际化多语言,angular-translate教程详解,$translate.instant()为什么不生效

    壹 ❀ 引 最近项目要求支持国际化多语言,由于项目用的还是angularjs,那么首当其冲的选择了angularjs封装的I18N插件angular-translate,本文主要会从三个方向展开讨论, ...

  10. NC16496 [NOIP2014]飞扬的小鸟

    题目链接 题目 题目描述 为了简化问题,我们对游戏规则进行了简化和改编: \1. 游戏界面是一个长为n,高 为m的二维平面,其中有k个管道(忽略管道的宽度). \2. 小鸟始终在游戏界面内移动.小鸟从 ...