php - Safari 和 php session 在 facebook iframe 中不起作用

标签 php facebook iframe safari session-variables

我在让我的 Facebook 应用程序在 Safari 上运行时遇到问题。

问题与 PHP session 变量有关。

我知道 Safari 在处理跨域 session (在 iframe 内)时存在问题,我发现了大约 2 种解决方案:

  1. 设置 p3p header :我尝试了很多 p3p header ,但没有一个有效 [例如:header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');].
  2. 使用 javascript 向 iframe 发送帖子。这会创建交互, session 应该有效。但事实是我不控制 iframe 容器,因为那是 facebook。

有人知道替代解决方案吗?

谢谢!

最佳答案

编辑: 已确认,此解决方法不再适用于 Mac 上的 Safari 5.1。此处讨论:Safari 3rd party cookie iframe trick no longer working?

我不知道您的用例是什么,但在我们的应用程序中,我们有一个带有“允许访问”按钮的欢迎屏幕,可以打开权限对话框。当用户单击“允许访问”时,我用它来打开一个设置 session 并立即关闭的新窗口(这是在上面链接的问题中提出的)。用户允许访问后,您可以重新加载页面吗?在我们的例子中,这是不需要的,因为与服务器的所有通信都是使用 ajax。


我正在使用第二种解决方案并且没有遇到任何问题,这是我的代码(使用 jQuery):

/**
 * Hack for Safari cross-domain cookies. See: 
 * http://anantgarg.com/2010/02/18/cross-domain-cookies-in-safari/
 */

$(document).ready( function() {

    var isSafari = (/Safari/.test(navigator.userAgent));

    if (isSafari) {
        var iframe = $( "<iframe />" );
        iframe.attr( "id", "cookieframe" );
        iframe.attr( "name", "cookieframe" );
        iframe.hide();

        var form = $( "<form />" );
        form.attr( "id", "cookieform" );
        form.attr( "target", "cookieframe" );
        form.attr( "enctype", "application/x-www-form-urlencoded" );
        form.attr( "action", "startsession.php" );
        form.attr( "method", "post" );

        $("body").append( iframe );
        $("body").append( form );
        form.submit();
    }

} );

在 startsession.php 中,我刚刚开始 session :

<?php session_start();

关于php - Safari 和 php session 在 facebook iframe 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991451/

相关文章:

javascript - 打印页面在 iframe 加载时自动打开

php - 重写 URL 不适用于本地主机

php - 如何通过包含数千个数字的文件搜索确切数字?

php - Laravel 迁移 - 如何将 `id` 字段更改为主要字段并在以后自动递增

ios - 无连接时返回 SLComposeViewControllerResultDone

html - z-index 不允许我与后面的内容进行交互

php - windows上使用xampp,重写/var/www/

iphone - Facebook Connect 发布状态更新

ios - Facebook 图形 API 浏览器 : get friends of friends

iframe - MVC 4 - Razor - "a potentially dangerous request.form value was detected from the client"