我正在尝试使用 ASP.NET Core 将 cookie 的 SameCookie 属性显式设置为无。
我尝试这样做的方法是像这样设置 CookieOptions 的属性值:
var options = new CookieOptions
{
SameSite = SameSiteMode.None
};
(为简洁起见省略了其他属性)
但是,当我检查服务器响应 header (服务器应该使用 SameSite=None 设置 cookie)时,我可以看到 SameSite 被省略了。相反,我可以看到 Value、Expires、Path 甚至 Secure 明确说明。
如果我在 C# 代码中将 SameSite 设置为 Lax 或 Strict,我可以看到它明确包含在 Set-Cookie header 中。如果我将其设置为 None - 我不能。
我确实检查了两个浏览器 - Firefox 和 Chrome 77(我知道这个版本引入到 SameSite 的变化)。
有一个包含 SameSite=None 的黑客。您只需要在 CookieOptions 的 Path 属性中添加以下行:
options.Path += "; samesite=None";
然后它可以在响应的 Set-Cookie header 中找到。
有没有办法配置 Kestrel(没有用于托管的 IIS,裸 Kestrel)以在 header 中包含 SameSite=None 而不像这样对其进行黑客攻击?
最佳答案
该问题现已通过最新版本的 .NET Framework 和 .NET Core 解决。
正如我已经在另一个帖子中发布的 https://stackoverflow.com/a/58998232/906046 , cookie 选项 SameSiteMode.None
现在正在按预期工作。
关于c# - ASP.NET Core 省略了 SameSite Cookie 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56988877/