首页 > 解决方案 > 为什么 cookie 登录系统不能在 iframe 上运行?

问题描述

我在两个不同的子域上有两个不同的站点(使用相同的域):

  1. 主站点:one.domain.com
  2. 框架网站:two.domain.com

主站点 ( one.domain.com) 创建一个 iframe two.domain.com,第二个站点有一个登录 cookie 系统,该系统要求输入电子邮件和密码并使用 cookie 跟踪登录用户。

如果您直接在登录系统上进行测试,登录系统可以正常工作,two.domain.com但是当two.domain.com包裹在 iframe 中时,登录系统无法正常工作,经过一番调查,这个问题似乎只发生在某些浏览器(主要是 sa​​fari)上,原因是浏览器没有允许在 iframe 中设置 cookie,如何解决?

标签: javascripthtmlauthenticationiframesafari

解决方案


Safari 有一个保守的 cookie 策略,将 cookie 条目限制为仅用户选择(“导航到”)的页面。这可能是导致问题的原因。但是,这不适用于跨子域。

假设您访问 domain.com,那么您可以从 two.domain.com 设置 cookie,而无需直接用户交互 (iframe)。


推荐阅读