Asp.net 饼干';SameSite=无设置丢失
我们有一个基于ASP.NET的网站。我们需要在第三方的iframe中运行该站点。网站的各个部分最近停止了在这个iframe场景中的工作,我们已经将其缩小到用户使用Chrome和AspNet.ApplicationCookie,以及一些在iframe中不可用的自定义cookie(在iframe之外没有运行问题) 该站点使用OWIN身份验证,因此我能够升级到ASP.NET 4.8和OWIN Nuget包。这允许我在Asp.net 饼干';SameSite=无设置丢失,asp.net,asp.net-mvc,cookies,iframe,samesite,Asp.net,Asp.net Mvc,Cookies,Iframe,Samesite,我们有一个基于ASP.NET的网站。我们需要在第三方的iframe中运行该站点。网站的各个部分最近停止了在这个iframe场景中的工作,我们已经将其缩小到用户使用Chrome和AspNet.ApplicationCookie,以及一些在iframe中不可用的自定义cookie(在iframe之外没有运行问题) 该站点使用OWIN身份验证,因此我能够升级到ASP.NET 4.8和OWIN Nuget包。这允许我在IAppBuilder的CookieAuthenticationOptions中设置C
IAppBuilder
的CookieAuthenticationOptions
中设置CookieSameSite
属性。在此之后,我可以看到AspNet.applicationcokie被标记为安全且SameSite=None。太好了
然而,对于自定义cookies,我似乎无法使SameSite设置正常工作。创建cookie的代码是:
HttpContext.Current.Response.SetCookie(new HttpCookie(key, value)
{
Expires = expiration,
SameSite = SameSiteMode.None,
Secure = true
});
这些cookie在iframe之外工作。使用Chrome和Firefox开发工具,我看到它们被标记为安全的,但是SameSite设置没有设置(在Firefox开发工具中特别显示“unspecified”),所以它们在iframe中运行时仍然不可用
一些相关的事情:
- 我们安装了最新的.net framework 4.8版本,因此我认为不需要在服务器上安装任何补丁来支持SameSite
- 在本地,cookies的设置看起来是正确的。我可以看到标记为安全且SameSite=None的cookies。但是,这在负载平衡服务器设置上失败(负载平衡器后面有两台Windows 2016服务器)
- 使用chrome://flags/,我可以将默认cookies的
SameSite设置为Disabled,并且在iframe中一切都按预期工作。(我认为这只是证明问题确实是一样的)
- 我试图用config设置SameSite设置,但没有成功:
SameSite
和Secure
按预期设置。对我来说,这排除了负载平衡器以任何方式影响cookie的可能性
如果我是对的,那只剩下一个代码问题,但是,伙计,这看起来很简单