Facebook应用程序(iframe)和第三方cookie
我有一个作为iframe在Fabebook内部运行的Rails应用程序。 我使用Koala gem进行FB通信(也是某些部件的js SDK)和Devise作为身份验证的基础。
一段时间以来,我发现应用程序在iframe中运行的问题存在一些问题。 所以第三方cookies不能设置。 对于IE我使用P3P标题,以某种方式缓解了这个问题。
但整件事情非常混乱。 我在雪豹。
例如:
在Safari 5.1.1中,我设置了“阻止来自第三方和广告商的Cookie”。 该应用程序工作正常,可以毫无问题地使用。
使用Chrome 5.0.874(非常新的更新),选中了“阻止第三方Cookie被设置”选项,因此我的应用设置的两个主要Cookie(应用cookie和fbs_xxxx cookie)无法设置,因此应用无法运行用户需要始终进行身份验证。
Opera 11.52不提及第三方cookies,浏览器被设置为“仅接受来自我访问的网站的cookies”。 我的应用程序适用于该设置。
随着Firefox 7.0.1我的应用程序的工作原理,但我找不到任何设置处理cookie。 只是要删除它们。
所以显然我的问题是与Chrome,但相同的设置与Safari的工作。 所以我很困惑。
是否要求用户允许第三方Cookie成为此问题的唯一解决方案?
谢谢。
更新我的当前工作解决方案
我做了一些额外的研究和测试。 我曾尝试使用Rails替代会话存储方法。 默认情况下,它们存储在一个cookie中,但可以将会话数据存储在内存,数据库等中,但这还不够,因为它仍然使用一个cookie来指向您选择的替代存储。
最后,我设置了一些信息,使我可以找到当前登录用户的身份,获取用户并使用Devises sign_in方法手动登录该用户。 我不太喜欢它,但现在我可以阻止第三方Cookie并仍然有效。 我稍后将进行更改,而不是在那里获得真正的信息,我将从中获取用户(之前已设置)的密钥,然后才能访问该memcached服务器。
谢谢。
如果无法设置Cookie,请在网址末尾设置会话ID。
Firefox有一个非直观的cookie设置位置。 转到工具 - >选项 - >隐私,然后从下拉框中选择“使用自定义历史记录设置”,然后会出现Cookie设置。 但是如果你将它们设置为默认值,它们将会“消失”。
在第三方cookie的定义和处理方面存在很大的不一致性(例如在Firefox中,禁止不仅仅是设置cookie,还包括读取它们)。 出于这个原因,我会建议,如果可能的话,消除任何依赖cookies。 已经很难告诉用户他们必须启用听起来不安全的东西(更不用说提供关于如何为每个浏览器执行的所有不同指示),并且随着浏览器继续加强其默认设置,情况会变得更糟。 不幸的是,所有标准库似乎都希望默认使用cookie,因此这不是一件容易的事情,但是如果您刚开始编写应用程序,我认为尝试找到一种无cookie的方式来处理蝙蝠。
链接地址: http://www.djcxy.com/p/9867.html