ASP.NET Core忽略的SameSite Cookie属性

Gra*_*Cat 6 c# cookies asp.net-core

我试图将带有ASP.NET Core的cookie的SameCookie属性显式设置为None。

我尝试执行此操作的方法是这样设置CookieOptions的属性值:

var options = new CookieOptions
{
    SameSite = SameSiteMode.None
};
Run Code Online (Sandbox Code Playgroud)

(为简便起见,省略了其他属性)

但是,当我检查服务器响应标头(服务器应该使用SameSite = None设置cookie)时,可以看到SameSite被省略了。相反,我可以清楚地看到“价值”,“到期”,“甚至安全”。

如果我将C#代码中的SameSite设置为Lax或Strict,则可以看到它明确包含在Set-Cookie标头中。如果将其设置为“无”,则无法。

我确实检查了两个浏览器-Firefox和Chrome 77(我知道此版本引入SameSite的更改)。

有一个hack包含SameSite = None。您只需要向CookieOptions的Path属性添加以下行:

options.Path += "; samesite=None";
Run Code Online (Sandbox Code Playgroud)

然后可以在响应的Set-Cookie标头中找到它。

有没有一种方法可以配置Kestrel(没有用于托管的IIS,裸Kestrel)在标头中包含SameSite = None,而不会像这样骇客呢?

Xav*_*erh 3

该问题现已通过最新版本的 .NET Framework 和 .NET Core 得到修复。

正如我已经在另一篇文章/sf/answers/4129876271/中发布的那样,cookie 选项SameSiteMode.None现在按预期工作。