我有一个 .NET 4.5.2 Web 应用程序,我需要在其中传递跨站点上下文中的身份验证 cookie。 我正在设置 SameSite=None,方法是将其附加到路径
FormsAuthentication.SetAuthCookie(myUser, false, $"{FormsAuthentication.FormsCookiePath}; SameSite=None; Secure");
,
某些浏览器与 SameSite=None (https://www.chromium.org/updates/same-site/incompatible-clients( 不兼容,因此我必须排除它以支持这些浏览器:
FormsAuthentication.SetAuthCookie(myUser, false, FormsAuthentication.FormsCookiePath);
在这两种情况下,.NET 都会将 SameSite="Lax" 添加到 cookie 中,因此在第一种情况下,Set-Cookie 标头如下所示:
AC7.AUTH=ABC; path=/; SameSite=None; secure; HttpOnly; SameSite=Lax
在第二种情况下:
AC7.AUTH=ABC; path=/; HttpOnly; SameSite=Lax
这似乎是在我们从Microsoft安装KB4530689安全更新时引入的。 我们卸载了该更新,它恢复为不将"SameSite=Lax"附加到所有cookie。 我不确定如何长期缓解此问题,如果Microsoft打算使用旧版本的 .NET 进行此行为,或者是否有另一种解决方案我没有看到。 任何帮助,不胜感激。
我也一直在与这个作斗争。 见 https://learn.microsoft.com/en-us/aspnet/samesite/system-web-samesite 我们使用 iframe,因此可能的解决方案是使用 web.config 更改......<forms cookieSameSite="None" /
>