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