javascript - 根据主机域限制 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 内容的请求包含的信息足以可靠地识别主机。那不是问题。
解决方案
您不能为“其他”域设置 cookie,因此您加载的内容myiframe.com
将无法为任何一个a.com
或b.com
如果您有一种机制来确定您的内容通过 iframe 嵌入的位置(引荐来源网址实际上不会为此工作,而且太不可靠),那么您可以使用不同的会话 cookie 名称来为 iframe 内容“获取”不同的会话在 a.com 和 b.com 内运行。
推荐阅读
- kubectl - 如何部署较旧的 ingress-nginx-controller 或使用 minikube 指定版本?
- java - 如何使用休眠将查询列映射到类?
- node.js - 为什么我在 Node Js 中的后端项目停止在数字海洋中工作?
- intershop - 在 Intershop 7.10 中获取付款方式/配置的推荐方式
- c++ - 从字符串文字返回 QString
- python - 创建目录和文件 - 未按预期工作(pathlib、.mkdir、.touch)
- python - 创建一个字典形式一个困难的字符串格式python
- c# - 单元测试未运行,因为“无法加载文件或程序集 System.IO”异常
- kubernetes - 当前版本的 Helm 回滚钩子
- javascript - 从 showModalDialog 返回数据