dugubingxun

学习是要一直坚持的事

解决vue用axiso两次访问后台api,发现后台的sessionID不一致

我用的是ASP.NET Core7.0做的后台api,在解决了跨域问题(这个问题在官网上就有答案https://learn.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-7.0

为了方便 阅读,我再讲一下

在里progam里面增加代码(黄色代码),代码格式我就把不变的放到一起了

解决完这个之后,因为要用session所以又增加了对session的支持(绿色部分),这个也可以在官网或者其他地方找到

然后解决需要session 的id 一致问题,首选在服务端放开带cookie的验证,红色部分,由于加了验证,导致AllowAnyOrigin()错误,所以改成了.SetIsOriginAllowed(_ => true),

这样服务端就解决了

var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddCors(options => {

options.AddPolicy(name: MyAllowSpecificOrigins,

policy =>
{
policy.WithOrigins("*", "*", "*")
//.AllowAnyOrigin()
.SetIsOriginAllowed(_ => true)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});

builder.Services.AddDistributedMemoryCache();//添加session支持,同时要加这句
///设置session
builder.Services.AddSession(options =>
{

options.IdleTimeout = System.TimeSpan.FromSeconds(120);//设置session的过期时间
//options.Cookie.Name = ".AdventureWorks.Session";
//options.Cookie.HttpOnly = true;
options.Cookie.HttpOnly = true;//设置在浏览器不能通过js获得该cookie的值
options.Cookie.IsEssential = true;
});

///下面这些不用的可以去掉

 

builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddHttpContextAccessor();  
builder.Services.AddMvc();

 

builder.Services.AddControllers();

var app = builder.Build();     app.UseHttpsRedirection();    app.UseStaticFiles();     app.UseRouting();

app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();   

  app.UseSession();//UseSession配置在UseMvc之前  

  app.MapControllers();     app.Run();

 

然后是在vue+axiso的时候遇到问题

首先在axiso引用的地方增加 以下代码,

axios.defaults.withCredentials =true;  
很多地方都写这样就直接可以解决,然后我试了之后,发现如果直接调用后端地址进去之后发现session的Id问题还是未解决
最后又是跟踪文件头又是返回的跟踪还是没解决,
最后无奈之下还是试了试代理
在vue.config.js 中增加代理,如下代码后,问题解决
,最后我想问一下这问题产生的原理是啥啊,哪位大神看到的话给个答案

module.exports = {
    devServer: {
        proxy: {
            '^/api': {
                target: 'https://localhost:7164',
                 pathRewrite: {'^/api': ''}
                 ,ws: true
                 ,changeOrigin: true
            }
        }
    },.........后面代码省了
 

 

posted on 2024-01-18 15:59  冰血飞  阅读(135)  评论(0编辑  收藏  举报

导航