我知道这个话题已被广泛报道,但我完全陷入困境,需要一些指导和新意见。我有一个Facebook iFrame应用程序,可以在IE6,8,Safari,Chrome,FF等中完美运行。只有IE7让我感到悲伤。
我创建了一个P3P策略文件及其关联的XML文件。该策略使用P3P策略验证器完全验证。
只要iFrame从Facebook内部加载,就会出现红眼图标,当我点击它时,它会报告来自iFrame域的cookie被阻止。我已确认默认的“中等”隐私设置是在IE7上设置的。有趣的是,我发现通过删除Google Analytics,页面最初会加载而不会阻止Cookie,但是一旦页面重新加载或用户登录,即使P3P标头立即从每个页面发送,Cookie也会再次被阻止页。所有资产都通过S3发送,因此不存在任何问题。
仅供参考,这是我的P3P文件;我尝试过绝对路径,相对路径,CP和policyref的切换顺序,并将两者分成单独的标题调用而没有运气。
header('P3P: CP="NON DSP TAIa PSAa PSDa OUR IND UNI", policyref="/w3c/p3p.xml"');
我已确认浏览器正在发送和接收P3P标头。我在HTML页面添加了META p3p标签。我删除了所有重定向。问题仍然存在。我花了很多时间研究这个问题,现在我已经没想到了。任何关于如何从新的角度处理这个问题的想法或想法将不胜感激。我使用PHP 5.3.5而不是NGINX。没有使用框架......
答案 0 :(得分:0)
我遇到了同样的问题。 Facebook iframe应用程序在除IE7之外的所有浏览器中都运行良好。当你第一次去应用程序时,它装得很好。但是当你点击一个链接时它会加载页面好,但是大约一秒后会刷新并重定向浏览器。最后你只得到一个空白页面。我还有红眼图标阻止了饼干。
罪魁祸首原来是加载facebook javascript lib的javascript代码:
FB.init({
appId : '<?=FACEBOOK_APP_ID?>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
要解决此问题,我将状态更改为:true,状态为:false。现在,当点击链接时,页面加载并且不刷新。
所以我真的在这里发生了什么我不确定但是我有猜测......重定向是由FB javavascript检查登录状态引起的,并且由于某种原因认为用户已经注销并因此重定向到登录页。我猜服务器端登录脚本会看到您确实已登录并将您重定向回应用程序。等等。
所以IE7没有设置iframe内设置的cookie的问题仍然存在,邪恶的眼睛仍然存在。但只要你的iframe中的链接引用父窗口target =“_ top”指向facebook画布页面,你似乎无论如何都不需要cookie。 PHP SDK在以$ _REQUEST开头的许多地方查找会话。我猜测,当facebook加载iframe时,它包含查询字符串中的会话参数。因此,即使cookie在IE7中通过iframe不起作用,您的服务器脚本仍将从查询参数中获取它们。
希望这有点道理,我不完全明白,但它修复了我的应用程序。
答案 1 :(得分:0)
我不知道,但也许这会有所帮助,它就像我的应用程序上的魅力一样。
header('P3P: CP="CAO PSA OUR"');
ob_start();
session_start();