由于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#中直接设置此东西吗?
非常感谢您的帮助
答案 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">
属性。