【发布时间】:2018-05-18 11:13:00
【问题描述】:
我有一个网络应用程序要加载到不同主机上的 iframe 中(假设从 myiframe.com 提供)。为了维护会话,我使用了一个名为“会话”的 cookie,该 cookie 在第一次请求 iframe 的内容时设置,域为 myiframe.com。
现在假设主机 A (a.com) 加载 iframe,因此使用域 myiframe.com 设置会话 cookie。如果您导航到主机 B (b.com),则使用相同的会话 cookie。我想要的是会话彼此独立,您可以在 A 中进行会话,在 B 中进行不同的会话。即当从 B 请求应用程序时,不使用从 A 请求时设置的 cookie。
我想我可以根据主机使用不同的 cookie 名称,然后通过将适当的 cookie 与主机信息匹配来验证会话,但我想知道是否可以使用“set-cookie”标头和 cookie 域以某种方式做到这一点字段。
顺便说一句,我无法控制主机或它们如何添加 iframe,尽管它们都以完全相同的方式进行。
编辑:用于获取 iframe 内容的请求包含的信息足以可靠地识别主机。这不是问题。
【问题讨论】:
-
“即当从 B 请求应用程序时,不使用从 A 请求时设置的 cookie” - 您在这里想象的这个“来自”实际上并不存在。 “我无法控制主机或他们如何添加 iframe” - 那么你或多或少地不走运。推荐人将是唯一能让你做出这样决定的东西,我猜应该知道这有多不可靠。
-
@CBroe 我可以毫无问题地识别发出请求的主机。我编辑了这个问题,以防万一它不像我想的那么清楚
-
iframe 不是由“主机”请求的,而是由访问包含 iframe 的网站的用户的浏览器请求的。在这方面,我看不出你到底想“识别”什么,分别。有什么目的。
-
@CBroe 是的,你是对的,iframe 不是由主机请求,而是由浏览器请求。这只是一种简化的方式,并且通过说“使用添加了 iframe 元素的网页响应的主机,使浏览器请求 iframe 内容”,从而变得冗长和详细。我刚刚决定为“请求 iframe 的主机”总结并更改它
-
那么实际问题在哪里?如果您知道文档的 iframe 的位置,那么根据该名称使用不同的会话 cookie 名称......?
标签: javascript http cookies setcookie