iframe 中的页面没有看到自己的 cookie
Posted
技术标签:
【中文标题】iframe 中的页面没有看到自己的 cookie【英文标题】:Page within iframe not seeing its own cookies 【发布时间】:2021-10-17 15:23:58 【问题描述】:我有一个有趣的困境。
我们在不同的域上有 2 个网站。为简单起见,假设它们是:
“App”:在main-app.com/app
上运行的 SPA 应用程序
“主机”:在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 被发送,我们如何解决这个问题?
(我们可以控制两个网站)
【问题讨论】:
【参考方案1】:您使用的是谷歌浏览器吗? 在 Google Chrome 中,cookie 的默认属性已更改为 samesite=lax。 samesite=lax cookie 不在 iframe 中发送。此更改的目的是减轻 CSRF 等攻击。 如果您使用 Firefox,您仍然应该在 iframe 中的页面上登录。
【讨论】:
我正在使用 Chrome... 我将在哪里/如何覆盖此参数? 你可以通过添加属性samesite=none;来覆盖这个参数。安全到 cookie。设置 Cookie:SESSIONID=XXXXXXXX;路径=/;安全的;相同站点=无; 太棒了。这是确切的问题(在 Firefox 中完美运行),我什至不知道在哪里看;花了一天时间,你为我节省了大量时间。非常感谢!以上是关于iframe 中的页面没有看到自己的 cookie的主要内容,如果未能解决你的问题,请参考以下文章
iframe 内的 iframe 以访问自己的 cookie
IE、P3P、IFrame 和阻止的 cookie(在页面主机页面请求个人信息之前有效)