C# SameSite 标志问题

kru*_*iar 3 c# google-chrome httpcookie samesite

由于 Chrome 将于SameSite=None2 月 4 日从 80 版本开始强制使用安全标志,因此我尝试使用以下代码行在我的 cookie 中设置此标志:

HttpCookie myCookie = new HttpCookie("XYZ");
myCookie.Value = newCookie;
myCookie.SameSite = SameSiteMode.None;
myCookie.Secure = true;
myCookie.Expires = DateTime.Now.AddYears(2);
context.Response.Cookies.Add(myCookie); 
Run Code Online (Sandbox Code Playgroud)

但这些属性不起作用。即使将 .Net Framework 版本升级到 4.8 后,该标志也没有设置SameSite=None为 cookie 所需的值。另外,我面临的一个奇怪的问题是,当我在 web.config 中使用以下行时,在从服务器请求它时,该标志会在我的 cookie 中正确设置:

<sessionState cookieSameSite="None" />
<httpCookies sameSite="None" requireSSL="true" />
Run Code Online (Sandbox Code Playgroud)

但是,当我在负载平衡中执行相同的配置并在另一台服务器上发布时,它不起作用。

有谁知道如何在 C# 中直接设置这个东西吗?

感谢您提前的帮助

Mic*_*Liu 5

您必须安装 2019 年 12 月 10 日(或更高版本)的 .NET Framework 累积更新。搜索 Microsoft 支持站点以查找适合您的 Windows 版本和 .NET Framework 的更新。

如果没有更新,ASP.NET 将永远不会向响应 cookie 添加 SameSite=None 属性。

通过更新,如果您将 HttpCookie.SameSite 显式设置SameSiteMode.None 或者在 Web.config 中设置该<httpCookies sameSite="None">属性,则 ASP.NET 将向响应 cookie 添加 SameSite=None 属性。此更新还将 ASP.NET 表单身份验证和会话 cookie 的默认 SameSite 模式更改为 Lax。要将它们更改回 None,请在 Web.config 中设置<forms cookieSameSite="None"><sessionState cookieSameSite="None">属性。