ajax跨域请求导致sessionid不一致问题

问题背景描述:

  前端:vue框架

  后端.net webapi

  审核资料的时候,需要先上传报告,完成后再审核通过(要审核通过必须先上传资料)

  后台拿到上传资料后缓存文件路径(为啥不直接存?因为客户端分两步走的,有可能客户很任性第一步走完后,第二步不走了)

  缓存文件路径时用了session存储

  本地postman测试正常,放到线上提交就报错,提示让客户先上传报告文件

  本地联调发现postman发送两次请求sessionid相同,前端发请求时两次请求的sessionid不同,导致无法获取上一次存储的文件路径

然后各种百度,处理结果如下:

a、在前端发起ajax请求时,需要加入xhrFields

$.ajax({
    url:"http://citygame1234.4kb.cn/CityServer/w/login",
    type:"post",
    async:"false",
    dataType:"json",
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    },
    success:function(data){
        console.log(data);
    }
});

 

b、在服务端需要设置Access-Control-Allow-Credentials的值为true

具体如何设置得看你具体如何设置跨域请求的

我本地用了Install-Package Microsoft.AspNet.WebApi.Cors这个扩展组件,具体设置方法如图,也可以参考本文下面的大神文章

 

 

 

参考:

https://www.cnblogs.com/landeanfen/p/5177176.html

https://www.cnblogs.com/moretry/p/4154479.html

http://www.ruanyifeng.com/blog/2016/04/cors.html

posted @ 2021-06-17 11:26  狼窝窝  阅读(475)  评论(0)    收藏  举报