解决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