Chrome 76 will begin to support an explicit SameSite: None
attribute
https://web.dev/samesite-cookies-explained/
I found that the current implementation of ASP.NET Core treats SameSiteMode.None
as a no-op and does not send any attribute. How can I add a custom attribute to a cookie and thereby add an explicit SameSite: None
to the cookie text?
Appending the attribute to the cookie value does not work as HttpResponse.Cookies.Append url-encodes the cookie value.
Same issue occurs in ASP.NET as in ASP.NET Core.
Until Microsoft produce a fix, a hack that's working for me is to replace
myCookie.Path = "/";
myCookie.SameSite = SameSiteMode.None; // has no effect
with
myCookie.Path = "/; SameSite=None";
This adds SameSite=None
to the set-cookie
header in the HTTP response.
It's now fixed in latest release of all versions of .NET Framework and .NET Core (https://github.com/aspnet/AspNetCore/issues/12125)
I have multiple projects running on .NET Core 2.2 and after upgrading to 2.2.207, I don't have the problem anymore.
Here a sample code present in ConfigureServices
method of Startup.cs
file
services.ConfigureApplicationCookie(options => {
options.Cookie.SameSite = SameSiteMode.None;
});
[Edit] If you are using all dlls and packages from nuget, you have to ensure Microsoft.Net.Http.Headers is in version 2.2.8 of above.
After last KB from microsoft in 10 december 2019, It should be fixed in .net framework and dotnetcore.
see:
response.Headers.Append("set-Cookie", $"{cookieName}={cookieValue}; path=/; SameSite=None; Secure");
seems to work as expected.
I tested this by enabling same-site-by-default-cookies
and cookies-without-same-site-must-be-secure
in Chrome Dev 76
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With