1

我知道这个话题已经被广泛讨论,但我完全陷入困境,需要一些方向和新的意见。我有一个在 IE6、8、Safari、Chrome、FF 等中完美运行的 Facebook iFrame 应用程序。只有 IE7 让我很伤心。

我创建了一个 P3P 策略文件及其关联的 XML 文件。该策略使用 P3P 策略验证器完全验证。

一旦从 Facebook 中加载 iFrame,就会出现红眼图标,当我单击它时,它会报告来自 iFrame 域的 cookie 被阻止。我已经确认在 IE7 上设置了默认的“中等”隐私设置。有趣的是,我发现通过删除 Google Analytics,页面将在最初加载时不会阻止 cookie,但是一旦页面重新加载或用户登录,cookie 就会再次被阻止,即使 P3P 标头是从每个站点立即发送的页。所有资产都是通过 S3 发送的,所以那里不应该有任何问题。

仅供参考,这是我的 P3P 文件;我已经尝试过绝对路径、相对路径、CP 和 policyref 的切换顺序,并将两者分成单独的标头调用,但没有成功。

header('P3P: CP="NON DSP TAIa PSAa PSDa OUR IND UNI", policyref="/w3c/p3p.xml"');

我已确认浏览器正在发送和接收 P3P 标头。我在 HTML 页面中添加了一个 META p3p 标记。我已删除所有重定向。问题仍然存在。我花了很多时间研究这个,现在我没有想法了。任何关于如何从新的角度解决这个问题的想法或想法都将不胜感激。我在 NGINX 上使用 PHP 5.3.5。没有使用框架...

4

2 回答 2

0

我有同样的问题。Facebook iframe 应用在除 IE7 之外的所有浏览器中运行良好。当您第一次访问该应用程序时,它加载正常。但是,当您单击链接时,它会正常加载页面,但大约一秒钟后会刷新并重定向浏览器。最后你得到一个空白页。我还有一个红眼图标挡住了 cookie。

罪魁祸首原来是加载 facebook javascript 库的 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 JavaScript 检查登录状态引起的,并且由于某种原因认为用户已注销,因此重定向到登录页面。我猜服务器端登录脚本会看到您确实已登录并将您重定向回应用程序。等等等等。

所以IE7没有设置iframe里面的cookies的问题依然存在,邪眼依然存在。但只要 iframe 中的链接引用指向 facebook 画布页面的父窗口 target="_top" ,您似乎就不需要 cookie。PHP SDK 在以 $_REQUEST 开头的多个位置查找会话。我猜当 facebook 加载 iframe 时,它​​在查询字符串中包含会话参数。因此,即使 cookie 通过 iframe 在 IE7 中不起作用,您的服务器脚本仍会从查询参数中获取它们。

希望这有某种意义,我不完全明白,但它修复了我的应用程序。

于 2011-02-03T00:12:56.303 回答
0

我不知道,但也许这会有所帮助,它在我的应用程序上就像一个魅力。

header('P3P: CP="CAO PSA OUR"');
ob_start();
session_start();
于 2011-04-27T06:03:11.773 回答