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

dmi*_*mi_ 15 c# asp.net asp.net-core

Chrome 76 将开始支持显式SameSite: None属性

https://web.dev/samesite-cookies-explained/

我发现 ASP.NET Core 的当前实现被视为SameSiteMode.None无操作并且不发送任何属性。如何向 cookie 添加自定义属性,从而SameSite: None向 cookie 文本添加显式?

将属性附加到 cookie 值不起作用,因为 HttpResponse.Cookies.Append url-encodes cookie 值。

GSt*_*ens 17

在 ASP.NET 中和在 ASP.NET Core 中发生相同的问题。

在微软提供修复之前,对我有用的黑客是替换

myCookie.Path = "/";
myCookie.SameSite = SameSiteMode.None;     // has no effect
Run Code Online (Sandbox Code Playgroud)

myCookie.Path = "/; SameSite=None";
Run Code Online (Sandbox Code Playgroud)

这会添加SameSite=Noneset-cookieHTTP 响应中的标头中。


Xav*_*erh 12

现在已在所有版本的 .NET Framework 和 .NET Core ( https://github.com/aspnet/AspNetCore/issues/12125 ) 的最新版本中修复

我有多个项目在 .NET Core 2.2 上运行,升级到 2.2.207 后,我不再有问题了。

这是文件ConfigureServices方法中存在的示例代码Startup.cs

services.ConfigureApplicationCookie(options => {
     options.Cookie.SameSite = SameSiteMode.None;
});
Run Code Online (Sandbox Code Playgroud)


Yga*_*bel 8

[编辑] 如果您使用来自 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