C#SameSite标志问题

时间:2020-01-28 19:35:46

标签: c# google-chrome httpcookie samesite

由于Chrome浏览器将于2月4日起从​​80版本开始强制使用SameSite=None和安全标志,因此我尝试使用以下代码行在Cookie中设置此 flags

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); 

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

<sessionState cookieSameSite="None" />
<httpCookies sameSite="None" requireSSL="true" />

但是,当我执行相同的配置并在另一台服务器上以负载平衡的方式发布时,它无法正常工作。

有人知道如何在C#中直接设置此东西吗?

非常感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您必须为.NET Framework安装2019年12月10日(或之后)的累积更新。 Search the Microsoft Support site来找到适合您Windows版本和.NET Framework版本的更新。

没有更新,ASP.NET将从不将SameSite = None属性添加到响应cookie。

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