[已更新-参见末尾的评论]
Google将更改其Chrome浏览器的行为,以便将cookie托管在另一个域的IFRAME中时不再起作用,除非将cookie明确地设置为SameSite = None和Secure。
为此,我们在ASP.NET MVC代码中进行了更改。关于何时设置此设置,我们有一些逻辑(仅适用于我们同意与之合作的合作伙伴),因此我们有以下条件逻辑:
if (isSameSiteCookieEnforced)
{
cookie.SameSite = SameSiteMode.None;
cookie.Secure = true;
}
我们在DEV,QA,STAGE环境中对此进行了测试,并且效果很好。在Chrome的开发人员工具(“应用程序”>“ Cookie”)中,您可以检查这些cookie,并查看它们是否都标记为“安全”,并且在SameSite列中没有“无”。
但是,当我们将其滚动到PROD环境时,使用相同的浏览器会得到不同的结果:cookie被标记为Secure,但是SameSite值为空。
我们检查的内容:
目前有点费力地说明cookie如何丢失“ SameSite”属性。导航到 chrome:// flags 并在 SameSite 上进行过滤,我们将这三个设置显示为“默认”,因此Chrome应该不会对一种环境造成任何不同的影响到另一个。
更新
我们的ASP.NET MVC应用程序使用IHttpModule,作为EndRequest方法的最后一步之一,我们跟踪cookie。您可以清楚地看到它们设置为SameSite = None和Secure = true。但是,当它们到达浏览器时,SameSite属性已被剥离。
答案 0 :(得分:1)
如果您是否要强制实施新的SameSite行为,则需要使用chrome:// flags条目same-site-by-default-cookies和cookies-without-same-site-must来测试行为-be-secure设置为“ Enabled”和“ Disabled”。如果将它们设置为“默认”,则无法说明其行为。取决于启动时确定的随机种子,它可以打开还是关闭,因为这些功能当前处于Beta版的现场试验(A / B测试)中。在此处查看“启动时间表”中的第二个项目符号列表:https://www.chromium.org/updates/same-site
答案 1 :(得分:0)
发现了问题-原来我们缺少Windows补丁。