首页 > 解决方案 > 根据主机域限制 iframe cookie

问题描述

我有一个 web 应用程序,打算在不同主机上的 iframe 中加载(假设从 myiframe.com 提供)。为了维护会话,我使用了一个名为“会话”的 cookie,该 cookie 在第一次请求 iframe 的内容时设置,域为 myiframe.com。

现在假设主机 A (a.com) 加载 iframe,因此使用域 myiframe.com 设置会话 cookie。如果您导航到主机 B (b.com),则使用相同的会话 cookie。我想要的是会话彼此独立,您可以在 A 中拥有一个会话,在 BIe 中拥有一个不同的会话,当从 B 请求应用程序时,不使用从 A 请求时设置的 cookie。

我想我可以根据主机使用不同的 cookie 名称,然后通过将适当的 cookie 与主机信息匹配来验证会话,但我想知道是否可以使用“set-cookie”标头和 cookie 的域字段以某种方式做到这一点。

顺便说一句,我无法控制主机或它们如何添加 iframe,尽管它们都以完全相同的方式进行。

编辑:用于获取 iframe 内容的请求包含的信息足以可靠地识别主机。那不是问题。

标签: javascripthttpcookiessetcookie

解决方案


您不能为“其他”域设置 cookie,因此您加载的内容myiframe.com将无法为任何一个a.comb.com

如果您有一种机制来确定您的内容通过 iframe 嵌入的位置(引荐来源网址实际上不会为此工作,而且太不可靠),那么您可以使用不同的会话 cookie 名称来为 iframe 内容“获取”不同的会话在 a.com 和 b.com 内运行。


推荐阅读