会话在ASP中不维护.Net Core 6.0 - iframe



当我们在另一个域的页面上嵌入我们的应用程序(net core 6.0, React JS的单页应用程序)的iframe时,对会话变量的请求总是空的。

如果页面嵌入在同一域(我们的网站)的页面上,这种机制可以正常工作,但是当应用程序从另一个域的iframe调用时,会话总是空的。

我们尝试了下面的解决方案。它不工作。

请查看下面的代码细节。

在我们的项目中有以下代码:

在Program.cs

build.Services.AddSession(o =>
{
o.IdleTimeout = TimeSpan.FromHours(24);
o.Cookie.HttpOnly = true;
o.Cookie.IsEssential = true;
o.Cookie.SameSite = SameSiteMode.None;
o.IOTimeout = TimeSpan.FromHours(24);
});

build.Services.AddCookiePolicy(o => {
o.MinimumSameSitePolicy = SameSiteMode.None;
o.Secure = CookieSecurePolicy.Always;
o.CheckConsentNeeded = HttpContext => false;
});

build.Services.ConfigureApplicationCookie(o =>
{
o.Cookie.HttpOnly = true;
o.Cookie.IsEssential = true;
o.Cookie.SameSite = SameSiteMode.None;
o.Cookie.Expiration = TimeSpan.FromHours(24);
});

build.Services.AddDistributedMemoryCache();
build.Services.Configure<SecurityStampValidatorOptions>(o => o.ValidationInterval = TimeSpan.FromMinutes(720));

var app = build.Build();
app.UseCookiePolicy();
app.UseSession();

我们像下面这样存储会话

HttpContext.Session.SetString("Something", "Something");

但是当我们尝试获取会话值always时,它返回null。因为前一个会话id改变了。

var some = HttpContext.Session.GetString("Something");

我需要维护以前的会话cookie。

提前感谢。

我也有同样的问题,只是这个代码在Program.cs为我工作。

builder.Services.AddSession(options =>
{
options.Cookie.SameSite = SameSiteMode.None;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.IsEssential = true;
});

最新更新