Chrome 76 comenzará a admitir un atributo explícito SameSite: None
https://web.dev/samesite-cookies-explained/
Descubrí que la implementación actual de ASP.NET Core trata SameSiteMode.None
como un no-op y no envía ningún atributo. ¿Cómo puedo agregar un atributo personalizado a una cookie y, por lo tanto, agregar un SameSite: None
explícito al texto de la cookie?
Agregar el atributo al valor de la cookie no funciona como HttpResponse.Cookies.Append url-codifica el valor de la cookie.
5 respuestas
Ahora está corregido en la última versión de todas las versiones de .NET Framework y .NET Core (https: // github .com / aspnet / AspNetCore / issues / 12125)
Tengo varios proyectos ejecutándose en .NET Core 2.2 y después de actualizar a 2.2.207, ya no tengo el problema.
Aquí hay un código de muestra presente en el método ConfigureServices
del archivo Startup.cs
services.ConfigureApplicationCookie(options => {
options.Cookie.SameSite = SameSiteMode.None;
);
El mismo problema ocurre en ASP.NET que en ASP.NET Core.
Hasta que Microsoft produzca una solución, un truco que funciona para mí es reemplazar
myCookie.Path = "/";
myCookie.SameSite = SameSiteMode.None; // has no effect
Con
myCookie.Path = "/; SameSite=None";
Esto agrega SameSite=None
al encabezado set-cookie
en la respuesta HTTP.
[Editar] Si está utilizando todos los dlls y paquetes de nuget, debe asegurarse de que Microsoft.Net.Http.Headers esté en la versión 2.2.8 de arriba.
Después del último KB de microsoft en 10 de diciembre de 2019, debería repararse en .net framework y dotnetcore.
Ver:
- https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite
- https://docs.microsoft.com/en-us/aspnet/samesite/kbs-samesite
response.Headers.Append("set-Cookie", $"{cookieName}={cookieValue}; path=/; SameSite=None; Secure");
parece funcionar como se esperaba.
Probé esto habilitando same-site-by-default-cookies
y cookies-without-same-site-must-be-secure
en Chrome Dev 76
Otras respuestas han mencionado la corrección de .Net Core, por lo que omito esa parte.
La solución .Net Framework se proporciona a través de un "Paquete acumulativo de calidad".
Aquí es el KB para .Net 4.8.
Aquí es el KB para .Net 4.7.2.
Aquí es la fuente relevante de MSDN.
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
c#
C # (pronunciado "see sharp") es un lenguaje de programación multi-paradigma de alto nivel, estáticamente tipado desarrollado por Microsoft. El código C # generalmente se dirige a la familia de herramientas y tiempos de ejecución .NET de Microsoft, que incluyen .NET Framework, .NET Core y Xamarin, entre otros. Use esta etiqueta para preguntas sobre el código escrito en las especificaciones formales de C # o C #.