2009-01-21 117 views
9

我们正在使用iframe方法在这里构建Facebook应用程序。为了使应用程序正常工作,需要从iframe中设置cookie。在Firefox中访问第三方Cookie

Safari浏览器在默认情况下禁用第三方cookie,所以我们现在正在重新定向整个浏览器到我们的服务器,设置跟踪会话,然后再重定向回Facebook应用程序页面所需的cookie中。

此方法有效,并且工作良好。除非使用Firefox的用户手动禁用了第三方Cookie,因为Firefox默认启用了它们。 Safari的工作原因是它不允许您从iframe设置cookie,但您可以阅读它们。另一方面,Firefox不允许你阅读cookies,因此它变得不可能。

反正是有让火狐发送cookie的iframe在外部服务器上,当第三方cookie被禁用?

+2

你是说“我们需要设置第三方cookie,即使用户明确禁止它”?这听起来并不完全合法。也许你可以显示警告“需要第三方cookies”? – Piskvor 2009-01-21 15:55:55

回答

0

与定位浏览器不同,定位行为。

设置cookie并在接下来的页面加载查询到您的JS。如果他们不在那里,请使用替代方法设置它们。

(并确保你没有一个无限循环最终用户没有Cookie)

编辑:嗯,如果FF不能读他们可能是一个问题。如何通过这个系统发送每个人?

9

有没有办法让Firefox在禁用第三方cookie时将cookie发送到外部服务器上的iframe?

号这是好的。禁用第三方Cookie应该禁用他们。

2

呀它不发送或接受第三方Cookie,如果没有选择第三方的cookies。然而;复选框是“接受第三方cookie”,所以它绝对看起来应该仍然/发送/ cookies,只是不接受任何新的......怪人。

5

一种方法是做一个背景POST上使用JavaScript的初始页面加载一个隐藏的iframe。只要POST响应成功返回,您就可以设置cookie。这消除了影响用户体验的需求(插页式广告强制交互是另一种技术)。一些更多的想法和示例代码在这里:http://gist.github.com/586182

+0

这非常有帮助。谢谢! – 2012-02-05 03:13:05