在safari 5.1.5中缺少iframe上的cookie

时间:2012-04-17 13:24:23

标签: session iframe cookies safari

仅适用于Safari 5.1.4和5.1.5。它适用于较旧的Safari版本。

如果你去: http://gemal.dk/test/restob.html 然后点击你在iframe中获得在线预订的按钮

如果您点击绿色日,然后您会看到“您的会话已过期”。

如果你检查cookies,你就没有任何cookie。

Safari正在拒绝会话cookie,这是围绕Safari / Google问题开始的,其中Safari对第三方cookie更加严格。版本5.1.4 +

我该如何解决这个问题?如何在iframe中设置cookie?

我发送了正确的P3P标头。我已经尝试了很多我无法工作的东西。

它适用于Safari 5.1.4 +以外的所有其他浏览器

2 个答案:

答案 0 :(得分:2)

也许,以下链接对您有所帮助。

http://www.reizbombardement.de/archives/safari-5-1-4-enforces-cookie-policy

Safari 3rd party cookie iframe trick no longer working?

当然,要为您的域设置Cookie并刷新开启者然后关闭, 你必须准备虚拟页面(例如... safari_cookie_fix.php)

但是... 在我们的项目中,我们将其虚拟页面准备为好看(不错的可用性!)加载页面。

答案 1 :(得分:1)

我尝试了类似的问题。 一个网络“父”页面在jquery fancybox i-frame跨域中打开我的“子”网站。 使用Explorer,Chrome,Firefox,Opera以及MAC上的Safari(5.8.1)都没问题。 但是对于iPhone,iPad和迷你iPad,i-frame中的会话将丢失。

这意味着每次点击i-frame中的元素(网站都在aspx中)时,都会启动一个新会话。

我们以一种非常简单的方式解决问题:

当父网站启动时,它直接调用子站点中的页面(不在i-frame中)。在这个页面中,我只设置了一个会话变量,然后重定向到父网站。 现在,当子网站在iframe中打开时,会话将被保留。