我正在尝试找到一种在 Safari 的 iframe 中设置 cookie 的方法。Safari 的政策是不允许 iframe 设置 cookie,除非用户单击 iframe 中的某些内容。
我已阅读有关 Stackoverflow 和其他文章的问题/答案。以下是一些链接:
- Safari 会话变量中具有多个页面的 Facebook Iframe 应用程序不持久
- http://lightyearsoftware.com/2009/11/on-the-pain-of-developing-for-facebook/
- http://saizai.livejournal.com/897522.html
- http://anantgarg.com/2010/02/18/cross-domain-cookies-in-safari/
他们都提到了实现这一目标的技术变体。基本思想是创建一个表单元素并使其通过 JavaScript 调用或通过用户单击按钮来提交 POST 请求。一旦发送了 POST 请求,Safari 就会认为用户已经与站点进行了交互,然后允许设置 cookie。
我做了一些尝试来实现这种技术。我失败了。
我在《华尔街日报》上找到了一篇文章 ( http://online.wsj.com/article/SB10001424052970204880404577225380456599176.html ),其中谈到了 Google 如何使用这种技术将他们的 +1 按钮放入他们的 DoubleClick 广告中。这篇文章还引用了 Anant Garg 的博客文章(上面的链接)关于如何解决这个限制。
这是文章的引述:
为了绕过 Safari 的默认拦截,谷歌利用了浏览器隐私设置中的漏洞。虽然 Safari 确实阻止了大多数跟踪,但它对人们以某种方式与之交互的网站(例如,通过填写表格)进行了例外处理。因此,谷歌在其一些广告中添加了编码,使 Safari 认为有人正在向谷歌提交不可见的表单。然后 Safari 会让谷歌在手机或电脑上安装一个 cookie。
另一个引用:
一位苹果官员表示:“我们正在努力制止”绕过 Safari 隐私设置的行为。
我正在使用 2012 年 3 月 26 日发布的 Safari 5.1.5。《华尔街日报》的文章于 2012 年 2 月 17 日发布。Apple 是否有可能更改了 Safari,使这种解决方法不再有效?谁能确认这种技术适用于 Safari 5.1.5?