解决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引用的地方增加 以下代码,
本文来自博客园,作者:冰血飞,转载请注明原文链接:https://www.cnblogs.com/dugubingxun/p/17972689
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)