首页 > 其他分享 >IISExpress 跨域cookie的奇怪问题

IISExpress 跨域cookie的奇怪问题

时间:2024-03-05 16:23:55浏览次数:17  
标签:跨域 GetCookie IISExpress cookie SetCookie Type Response

测试环境

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>
View Code

正常情况

正常情况下,先点击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都是一样的效果,网上搜了下也没找到解决方案。

 

标签:跨域,GetCookie,IISExpress,cookie,SetCookie,Type,Response
From: https://www.cnblogs.com/jintianhu/p/18054296

相关文章

  • 跨域配置重复 header contains multiple values
    AccesstoXMLHttpRequestat'https://dev2.xxxxxx/stp/home/instruction'fromorigin'https://test1.xxxxxx'hasbeenblockedbyCORSpolicy:Responsetopreflightrequestdoesn'tpassaccesscontrolcheck:The'Access-Control-A......
  • 反射型xss的post请求获取cookie
    攻击者构造的网站地址:192.168.10.12:100受害者主机:192.168.10.134目标服务器:192.168.10.1步骤一:受害者主机访问目标服务器根据提示登录步骤二:输入xssPayload<script>document.location='http://192.168.10.12:100/pkxss/xcookie/cookie.php?cookie='+document.cookie<......
  • 学习之Cookie
    1.2.3Cookie的提交路径访问互联网资源时不能每次都需要把所有Cookie带上。访问不同的资源时,可以携带不同的cookie,我们可以通过cookie的setPath(Stringpath)对cookie的路径进行设置从ServletA中获取cookiepublicclassServletAextendsHttpServlet{@Override......
  • chromedriver 自动下载链接进行文件下载 (保持系统人工登录的状态,使用已打开的浏览器人
    需求:爬取需要登录系统才能访问页面,且知道系统登录账号解决方法:参考:https://blog.csdn.net/qq_39835505/article/details/124712410   感谢博主!自己打开Chrome浏览器,登录系统,使用chromedriver调用已开的Chrome浏览器打开自动下载链接进行文件下载解决步骤:......
  • xss利用之盗取cookie示例
    实验环境目标网站:宿主机:192.168.10.1访问虚拟机win11:192.168.10.134伪造网站:192.168.10.12:100pikachu步骤一:受害者cookie:步骤二:输入xsspayload'"><script>document.location='http://192.168.10.12:100/pikachu/pkxss/xccokie/cookie.php?cookie='+doc......
  • 使用原生 cookieStore 方法,让 Cookie 操作更简单
    前言对于前端来讲,我们在操作cookie时往往都是基于document.cookie,但它有一个缺点就是操作复杂,它并没有像localStorage那样提供一些get或set等方法供我们使用。对与cookie的操作一切都是基于字符串来进行的。为了让cookie的操作更简便,Chrome87率先引入了cookieStore方法。docume......
  • 面试题(三)—— 跨域
    一、什么是跨域1、跨域的产生在Web开发中,一个网页请求另一个域(域名、协议、端口号任一不同)的资源,就会发生跨域。2、跨域请求跨域请求是指在浏览器中执行的请求,其目标资源的域名、协议或端口与当前页面不同。3、跨域资源共享(CORS)跨域资源共享(CORS)是一种机制,它允许在一个源(域......
  • gin cookie和session
    Cookie●HTTP是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用Cookie或者Session实现●cookie是......
  • 500强企业进行跨域数据传输,都在使用什么方案?
    大型企业在全国或全球设立不同的分支机构已变得非常普遍,对于500强企业来说,除了总部外,还会在多地设立分公司、分公司下甚至会设立办事处,同时,会在一些特殊地区设立研发中心、数据中心及工厂等。这就导致企业的组织结构不管在横向还是纵向都进一步延伸。组织结构的扩大,是业务开展的必......
  • 全栈开发 - 从 Vue 配置中解决 CORS 跨域问题【亲测有效】
    一、CORS跨域问题解决1.1、前言如果你后端使用的是微服务项目,通过配置网关可以很好的解决跨域问题;如果你使用SpringBoot+Vue来写项目,可以在Controller上加@CrossOrigin来解决跨域,但是一旦你在后端配置了拦截器(比如通过HandlerInterceptor配置登录拦截器),那么此时再解......