Facebook应用(iframe)和第三方Cookie

Pod*_*Pod 7 cookies facebook ruby-on-rails

我有一个Rails应用程序在Fabebook内部作为iframe运行.我使用Koala gem进行FB通信(某些部分也使用js SDK)和Devise作为身份验证基础.

一段时间以来,我发现应用程序在iframe中运行的问题存在一些问题.因此无法设置第三方cookie.对于IE,我使用P3P标头,以某种方式缓解问题.

但整件事情让人很困惑.我在雪豹上.

例如:

  • 使用Safari 5.1.1,我设置了"阻止来自第三方和广告商的cookie".该应用程序工作正常,它可以毫无问题地使用.

  • 使用Chrome 5.0.874(最新更新)选中"阻止设置第三方Cookie"选项,以便我的应用设置的两个主要Cookie(应用程序cookie和fbs_xxxx cookie)无法设置,因此应用程序无法运行用户需要始终进行身份验证.

  • Opera 11.52没有引用第三方cookie,浏览器设置为"仅接受我访问过的网站的cookie".我的应用程序可以正常使用该设置.

  • 使用Firefox 7.0.1我的应用程序工作,但我找不到任何处理cookie的设置.只是为了删除它们.

显然我的问题在于Chrome,但同样的设置适用于Safari.所以我真的很困惑.

要求用户允许第三方cookie是解决此问题的唯一方法吗?

谢谢.

更新我当前的工作解决方案

我做了一些额外的研究和测试.我确实尝试使用Rails替代会话存储方法.默认情况下,它们存储在cookie中,但您可以将会话数据存储在内存,数据库等中.但这还不够,因为它仍然使用带有指向您选择的备用存储的指针的cookie.

最后,我设置了一些信息,该URL允许我找到当前登录用户的身份,获取用户并使用Devises sign_in方法手动登录该用户.我不太喜欢它,但现在我可以阻止第三方cookie并仍然有效.我稍后会进行更改,而不是在那里有真正的信息,我将获得一个memcached条目的密钥,从那里我将获得用户(之前设置),毕竟只有我的应用程序应该有权访问该memcached服务器.

谢谢.

Der*_*rek 2

如果无法设置 cookie,则在 url 末尾设置会话 ID。

  • 您能否举例说明这一点,谢谢。 (3认同)