如何解决Cookies的SameSite =无设置丢失
我们有一个基于ASP.NET的网站。我们需要在第三方的iframe中运行该网站。该网站的各个部分最近都停止在这种iframe情况下工作,我们已将其范围缩小到用户使用Chrome和AspNet.ApplicationCookie以及在iframe中不可用的几个自定义Cookie(在iframe外部运行没有问题)
该站点使用OWIN身份验证,因此我能够升级到ASP.NET 4.8和OWIN Nuget软件包。这使我可以在CookieSameSite
的{{1}}中设置CookieAuthenticationOptions
属性。之后,我可以看到AspNet.ApplicationCookie被标记为Secure并且SameSite = None。完美。
但是对于自定义cookie,我似乎无法使SameSite设置正常工作。创建cookie的代码是:
IAppBuilder
这些Cookie在iframe之外运行。使用Chrome和Firefox开发人员工具,我看到它们被标记为“安全”,但未设置SameSite设置(在Firefox开发人员工具中特别显示为“未指定”),因此在iframe中运行时它们仍然不可用。
一些相关的事情:
- 我们安装了.net框架的最新4.8版本,因此我认为我们不需要在服务器上安装任何补丁程序即可支持SameSite。
- 在本地,cookie的设置看起来正确。我可以看到标记为Secure和SameSite = None的cookie。但是,这在负载平衡服务器设置(负载平衡器后面有2台Windows 2016服务器)上失败。
- 使用chrome:// flags /,我可以将
HttpContext.Current.Response.SetCookie(new HttpCookie(key,value) { Expires = expiration,SameSite = SameSiteMode.None,Secure = true });
设置为“已禁用”,然后一切都会在iframe中正常运行。 (我认为这只是可以验证问题确实是SameSite)。 - 我也尝试使用config设置SameSite设置,但无济于事:
SameSite by default cookies
我创建的Cookie是否错误?我是否不需要修补程序错了?有什么方法可以确定是否应该以某种方式归咎于负载均衡器?
更新-2020年8月17日
我还没有进一步解释这一点。对我有用的方法是使用出站IIS重写添加“ Secure; SameSite = None;”。所有cookie-这似乎是在4.7.2和4.8更新之前解决此问题的常用方法。
重写确实确保按预期设置了<httpCookies requireSSL="true" sameSite="None" />
和SameSite
。对我来说,这排除了以任何方式影响cookie的负载均衡器。
如果我是对的,那只剩下代码问题,但是,伙计,这看起来很简单。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。