测试环境

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. Redis做Mybatis的二级缓存

    Redis做mybatis的二级缓存 作用提升速度,保证多台服务器访问同一数据库时不会崩 注意:保证本地有下载redis且已经打开,否则无法使用. [本文只讲述了实现步骤,并没有原理讲解] 保证有导入 ...

  2. 【JS 逆向百例】某易支付密码 MD5+AES 加密分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...

  3. windwos10-11打开任意文件弹出警告

    如下打开exe或者视频.图片都弹出警告 解决方案输入快捷键win+s换出搜索框 输入Internet 选项 进入安全选项点击自定义级别 找到,加载应用程序和不安全文件 勾选启用(不安全) 然后确定-在 ...

  4. 使用CSS3实现鼠标移到图片上图片放大

    转自 http://www.webkaka.com/tutorial/html/2017/072731/ 在现在的网页设计中,鼠标移到图片上图片放大的效果常常被用到,这个效果多应用于文章列表里.我一开 ...

  5. 从零开始配置vim(26)——LSP UI 美化

    之前我们通过几个实例演示如何配置其他语言的lsp服务,相信各位小伙伴碰到其他的编程语言也能熟练的配置它对应的lsp服务.本篇讲作为一个补充,我们来优化一下LSP 相关的显示 配置 UI 原始的 lsp ...

  6. 4.7 C++ Boost 多线程并发库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...

  7. OS X 下安装 pycurl

    1 (venv) ➜ pythonProject4 find / -iname ssl.h 2 find: /usr/sbin/authserver: Permission denied 3 /usr ...

  8. npm旧淘宝镜像过期,更换新淘宝镜像

    1. 清空缓存 npm cache clean --force 2.设置新淘宝镜像 npm config set registry https://registry.npmmirror.com/ 3. ...

  9. ECMAScript 2023 新特性预览

    ECMAScript 2023 的最终版本预计将于今年 6 月底发布.会议基本已经确定 了 ECMAScript 2023 的新功能列表,预计不会再有任何重大的编辑更改. 着该提案已被 ECMAScr ...

  10. STL源码剖析 | priority_queue优先队列底层模拟实现

    今天博主继续带来STL源码剖析专栏的第四篇博客了! 今天带来优先队列priority_queue的模拟实现!话不多说,直接进入我们今天的内容! 前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕 ...