我有一个Rails应用程序,它在Facebook的iframe中运行。我使用Koala gem进行FB通信(也使用js SDK的一些部分),以及Devise作为身份验证基础。
有一段时间,我发现由于应用程序在iframe中运行,存在一些问题。所以无法设置第三方cookie。对于IE,我使用了P3P头文件,这在某种程度上缓解了问题。
但整个过程非常混乱。我在Snow Leopard上。
例如:
- 在Safari 5.1.1中,我设置了“阻止第三方和广告商cookies”,应用程序工作正常,可以无问题使用。 - 在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中,但是您可以将会话数据存储在内存、db等中。但这还不够,因为它仍然使用一个指向您选择的备选存储的cookie的指针。
最终,我在URL中设置了一些信息,以便找到当前登录用户的身份,获取该用户并使用Devise的sign_in方法手动登录该用户。我不太喜欢它,但现在我可以阻止第三方cookie而仍然有效。我以后会做出更改,而不是在那里放置实际信息,我会有一个指向memcached条目的键(之前设置),毕竟只有我的应用程序才能访问该memcached服务器。
谢谢。
有一段时间,我发现由于应用程序在iframe中运行,存在一些问题。所以无法设置第三方cookie。对于IE,我使用了P3P头文件,这在某种程度上缓解了问题。
但整个过程非常混乱。我在Snow Leopard上。
例如:
- 在Safari 5.1.1中,我设置了“阻止第三方和广告商cookies”,应用程序工作正常,可以无问题使用。 - 在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中,但是您可以将会话数据存储在内存、db等中。但这还不够,因为它仍然使用一个指向您选择的备选存储的cookie的指针。
最终,我在URL中设置了一些信息,以便找到当前登录用户的身份,获取该用户并使用Devise的sign_in方法手动登录该用户。我不太喜欢它,但现在我可以阻止第三方cookie而仍然有效。我以后会做出更改,而不是在那里放置实际信息,我会有一个指向memcached条目的键(之前设置),毕竟只有我的应用程序才能访问该memcached服务器。
谢谢。