当页面在 iframe 中加载时,Firefox 不会存储 cookie。

4

我有一个包含子iframe的父网页:

  • 父级页面位于 https://first-site.com
  • 子级页面位于 <iframe src="https://second-site.com">(在父级页面内)
  • cookie 由 second-site.com 服务器在页面加载时使用以下 HTTP 标头设置:
    • Set-Cookie: iqsession=869194b8e575d0d333f9395557f564f5eca31c15761c; expires=Wed, 08-Feb-2023 03:51:14 GMT; Max-Age=600; path=/; secure; httponly; samesite=none
  • 当我在 first-site.com 上加载页面(其中包含 second-site.com 的 iframe),Firefox 无法存储 second-site.com 的 cookie。它在 cookie 标签下不可用,也不会在后续页面加载中提供给 second-site.com。控制台中没有警告或错误。
  • 这在 Chrome 中是可以工作的。
  • 请注意,我尝试跨域访问 cookie。cookie 只由 second-site.com 在服务器端设置,并且只由 second-site.com 在服务器端读取。外部父级页面不需要知道任何关于 cookie 的信息。
有没有想法为什么这在Firefox中不起作用?这个问题看起来有关,但并不是非常清楚。

你现在找到解决办法了吗?我也遇到了类似的问题。当Firefox存储了second-site.com的cookies时,这些cookies在通过iframe嵌入second-site.com时不会被发送。 - Daniel
你现在找到解决办法了吗?我遇到了类似的问题。当Firefox存储了second-site.com的cookies后,这些cookies在通过iframe嵌入second-site.com时不会被发送。 - undefined
我通过跳出 iframe 来解决这个问题,这样我的 second-site.com 就成为了 _top 框架,检查 cookie,然后重新加载原始页面。我能够跳出 iframe 是因为我正在使用 Shopify App Bridge,它打开了嵌入式框架和包含站点之间的一种后通道控制接口。我在身份验证流程中使用 cookies。 - Derrick Miller
P.S. 我得出的结论是,在 iframe 中无法使 cookies 在 Firefox 上工作。这只是我的结论。你的情况可能会有所不同。 - Derrick Miller
1个回答

0
我遇到了你描述的完全相同的问题。
然而,在与此问题苦苦斗争一段时间后,我发现在我的情况下,这只是因为我使用了一个自签名证书,而Firefox并不认可它的有效性。当我在一个具有正确证书的环境中测试相同的代码时,一切都按预期工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接