【问题标题】:Restrict iframe cookies based on host domain根据主机域限制 iframe cookie
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 2012-05-01
    • 2011-02-25
    • 2011-05-10
    • 2012-01-29
    • 2018-06-02
    • 2017-08-16
    • 1970-01-01
    相关资源
    最近更新 更多