我们有两个网站在不同的域名。为简单起见,我们设它们为:
- "App":一个在
main-app.com/app
上运行的SPA应用程序 - "Host":在
random-site.com/index.html
上运行的一个简单的index.html页面。index.html页面只包含一个iframe显示应用程序(指向main-app.com/app
)。
当我作为一个用户,去到应用程序(main-app.com/app
)并登录那里时,它在我的浏览器中设置了一个会话cookie,该cookie标识会话。但是,当我转到主机页面(random-site.com/index.html
)并加载应用程序的iframe时,会话cookie没有被发送。当我在网络检查器中查看它时,它只是被省略了。
为什么会发生这种情况?是什么阻止cookie被发送,我们如何解决这个问题?
(我们可以控制两个站点)
你在用Google Chrome吗?在Google Chrome浏览器中,cookie的默认属性已更改为samessite =lax。Samesite =lax cookie不是在iframe中发送的。此更改的目的是减轻诸如CSRF之类的攻击。如果您使用Firefox,您应该仍然登录到iframe中的页面。