ASP.Net 无法使用 SameSite=None 设置 cookie

Posted

技术标签:

【中文标题】ASP.Net 无法使用 SameSite=None 设置 cookie【英文标题】:ASP.Net Cannot set cookie with SameSite=None 【发布时间】:2020-05-22 09:36:42 【问题描述】:

我在带有 .NET Framework 4.8 的 IIS 上使用 MVC5。 我安装了最新的质量汇总 (1),它应该可以解决相同站点 cookie 的一些问题。

我创建三个cookie如下:

var now = DateTime.Now.ToLongTimeString();
var expiry = now.AddSeconds(30);

var cookieSameSiteNone = new HttpCookie("My.SameSite.None", $"sameSite None [now]")

    Secure = true,
    SameSite = SameSiteMode.None,
    Expires = expiry
;

var cookieSameSiteLax = new HttpCookie("My.SameSite.Lax", $"sameSite Lax [now]")

    Secure = true,
    SameSite = SameSiteMode.Lax,
    Expires = expiry
;

var cookieSameSiteStrict = new HttpCookie("My.SameSite.Strict", $"sameSite Strict [now]")

    Secure = true,
    SameSite = SameSiteMode.Strict,
    Expires = expiry
;

Response.Cookies.Add(cookieSameSiteStrict);
Response.Cookies.Add(cookieSameSiteLax);
Response.Cookies.Add(cookieSameSiteNone);

这些 cookie 设置在 Global.asaxApplication_EndRequest 中。该应用程序还使用 OWIN 进行身份验证。

使用 FireFox (v72.0.2) 我得到以下 cookie:

请注意,将 SameSite 设置为 None 的 cookie 已被接收为“未设置”

知道如何使用 SameSite=None 设置 cookie 吗?

我看到了其他建议将补丁应用到 .NET Framework(2) 的 SO 问题,但我已经安装了这些

(1)https://support.microsoft.com/en-gb/help/4534132/kb4534132-cumulative-update-for-net-framework

(2)How to set SameSite cookie attribute to explicit None ASP NET Core

【问题讨论】:

【参考方案1】:

这可能是 FireFox 显示 Cookie 的问题。 Chrome 似乎没有遇到同样的问题。 我用 Mozilla(1) 记录了一个错误。

(1)https://bugzilla.mozilla.org/show_bug.cgi?id=1613622

【讨论】:

以上是关于ASP.Net 无法使用 SameSite=None 设置 cookie的主要内容,如果未能解决你的问题,请参考以下文章

ASP与ASP.NET的区别

ASP.NET和ASP的区别是什么

无法为 spring boot 1.5.22 设置 cookie samesite=none

IE 或 Edge Print 对话框在没有会话的情况下向服务器发送请求(因为 SameSite=Lax on session cookie)

ASP.NET和ASP的区别是啥?

不可为空的字符串类型,如何与 Asp.Net Core 选项一起使用