gpt4 book ai didi

asp.net - .net core 2.1 从另一个位置重定向时,cookie 值始终为空

转载 作者:行者123 更新时间:2023-12-01 03:09:16 25 4
gpt4 key购买 nike

我正在使用自定义授权机制,将当前用户 session 存储在 cookie 中。每次有人访问网站时,ActionFilter 都会启动它来验证 cookie 值和 session 状态。

我遇到的问题是——我必须POST一些数据到另一个网站( https://differentUrl.com ),我在那里传递我的网站 returnUrl ( https://mywebsiteUrl.com )。不同的网站,工作完成后,发回POST对我的 returnURL 的响应。发生这种情况后,我尝试获取的 cookie 始终是 null .

像这样创建 cookie(这发生在登录时):

private readonly IHttpContextAccessor _contextAccessor; //Injected via DI
...
var cookieOptions = new CookieOptions()
{
Expires = DateTime.Now.AddDays(10),
Secure = true,
HttpOnly = false,
SameSite = SameSiteMode.None //Still sets as Lax in browser
};

this._contextAccessor.HttpContext.Response.Cookies.Append("SomeKey", "myEncryptedCookieValue", cookieOptions);

重定向后检索cookie:
var cookieDataString = this._contextAccessor.HttpContext.Request.Cookies["SomeKey"];
cookieDataString总是 null .

当我在同一个网站上时它工作正常,但是当我从另一个网站重定向回来时,它总是 null
更新 1:

经过一番研究,我发现这个问题可能会导致 SameSite政策。找到这篇文章 Using same site cookie attribute其中说 lax不是你收到的时候想用的东西 POST方法到您的网站。创建 cookie 我将 cookie 选项设置为 SameSiteMode.None .由于它不起作用,我发现您必须设置 MinimumSameSitePolicy在启动中间件中。
app.UseCookiePolicy(
new CookiePolicyOptions()
{
MinimumSameSitePolicy = SameSiteMode.None
});

删除旧cookie并创建新cookie后,它仍然使用 lax创建它。政策。

最佳答案

经过一些研究和尝试不同的测试用例后,我发现它确实是 SameSite政策正在发挥应有的作用。主要问题是它不允许我设置 SameSite = SameSiteMode.None ,即使在我添加了 MinimumSitePolicy 之后.

浏览文档一段时间后,我发现了这个 General Data Protection Regulation (GDPR) .net core 2.2

我所要做的就是在 ConfigureServices() 中添加这些行:

services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = SameSiteMode.None;
});

并添加 app.UseCookiePolicy();Configure() .

在这些修复之后,我终于删除了 Lax从 cookie 和重定向后,我终于从我的 cookie 中获得了一个值。

关于asp.net - .net core 2.1 从另一个位置重定向时,cookie 值始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53706448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com