Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 饼干';SameSite=无设置丢失_Asp.net_Asp.net Mvc_Cookies_Iframe_Samesite - Fatal编程技术网

Asp.net 饼干';SameSite=无设置丢失

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

我们有一个基于ASP.NET的网站。我们需要在第三方的iframe中运行该站点。网站的各个部分最近停止了在这个iframe场景中的工作,我们已经将其缩小到用户使用Chrome和AspNet.ApplicationCookie,以及一些在iframe中不可用的自定义cookie(在iframe之外没有运行问题)

该站点使用OWIN身份验证,因此我能够升级到ASP.NET 4.8和OWIN Nuget包。这允许我在
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设置,但没有成功:
我是否创建了错误的cookies?我不需要补丁是错的吗?是否有某种方法可以确定负载平衡器是否应该受到责备

更新-2020年8月17日

我还没来得及解释这件事。对我来说确实有效的方法是使用出站IIS重写将“Secure;SameSite=None;”添加到所有cookie中-这似乎是在4.7.2和4.8更新之前解决此问题的常用方法

重写可确保
SameSite
Secure
按预期设置。对我来说,这排除了负载平衡器以任何方式影响cookie的可能性

如果我是对的,那只剩下一个代码问题,但是,伙计,这看起来很简单