c# - ASP.NET Core 省略了 SameSite Cookie 属性

标签 c# asp.net-core cookies

我正在尝试使用 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/

相关文章:

asp.net-mvc - ASP.NET Core 2.0 : HTTP requests timeout, 但 HTTPS 请求没有

c# - 具有两个类型参数的通用接口(interface)的依赖注入(inject)

cookies - nodejs xmlHttpRequest 类似

Java Spring 将电子邮件 cookie 减半

c# - 如何将文件作为链接添加到 .NET Core 库中?

c# - 我们如何从 View 到 Controller 访问列表和其他字段

c# - HttpClientHandler 抛出 PlatformNotSupportedException

c# - "this"直接初始化类成员变量时不可用

asp.net-core - 存储在 key 保管库中时未拾取 InstrumentationKey

javascript - 为什么PHP可以设置Cookie而不是本地存储