繁体   English   中英

如何将 SameSite cookie 属性设置为显式无 ASP NET Core

[英]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 中得到修复。

看:

  1. https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite
  2. https://docs.microsoft.com/en-us/aspnet/samesite/kbs-samesite

response.Headers.Append("set-Cookie", $"{cookieName}={cookieValue}; path=/; SameSite=None; Secure"); 似乎按预期工作。

我通过在 Chrome Dev 76 中启用same-site-by-default-cookiescookies-without-same-site-must-be-secure来测试这个

其他答案提到了 .Net Core 修复,所以我跳过那部分。

.Net Framework 修复是通过“质量汇总”提供的。

是 .Net 4.8 的知识库。

是 .Net 4.7.2 的知识库。

是相关的 MSDN 源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM