![](/img/trans.png)
[英]How to set cookie attribute Samesite = None for .Net Framework earlier of 4.7.2 (for 4.5.2)
[英]How to set SameSite cookie attribute to explicit None ASP NET Core
Chrome 76 将开始支持显式的SameSite: None
属性
https://web.dev/samesite-cookies-explained/
我发现 ASP.NET Core 的当前实现将SameSiteMode.None
视为无操作并且不发送任何属性。 如何向 cookie 添加自定义属性,从而向 cookie 文本添加显式SameSite: None
?
将属性附加到 cookie 值不起作用,因为 HttpResponse.Cookies.Append url-encodes cookie 值。
在 ASP.NET 中和在 ASP.NET Core 中发生相同的问题。
在微软提供修复之前,对我有用的黑客是替换
myCookie.Path = "/";
myCookie.SameSite = SameSiteMode.None; // has no effect
和
myCookie.Path = "/; SameSite=None";
这会将SameSite=None
添加到 HTTP 响应中的set-cookie
标头。
现在已在所有版本的 .NET Framework 和 .NET Core ( https://github.com/aspnet/AspNetCore/issues/12125 ) 的最新版本中修复
我有多个项目在 .NET Core 2.2 上运行,升级到 2.2.207 后,我不再有问题了。
这是Startup.cs
文件的ConfigureServices
方法中的示例代码
services.ConfigureApplicationCookie(options => {
options.Cookie.SameSite = SameSiteMode.None;
});
[编辑] 如果您使用来自 nuget 的所有 dll 和包,则必须确保Microsoft.Net.Http.Headers为 2.2.8 以上版本。
在 2019 年 12 月 10 日来自微软的最后一个 KB 之后,它应该在 .net 框架和 dotnetcore 中得到修复。
看:
response.Headers.Append("set-Cookie", $"{cookieName}={cookieValue}; path=/; SameSite=None; Secure");
似乎按预期工作。
我通过在 Chrome Dev 76 中启用same-site-by-default-cookies
和cookies-without-same-site-must-be-secure
来测试这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.