使用CURL登录到远程服务器时的浏览器问题

时间:2013-04-30 20:22:21

标签: php curl

我需要让我的用户通过Iframe访问远程管理控制台软件。软件开发人员向我提供了一个包含在我的页面中的Curl代码,这段代码运行良好......除了在使用某些特定浏览器时出现问题。

实际上,我可以使用任何浏览器访问仪表板,但是当我想访问某个特定的远程页面时(通过点击仪表板本身中的相关链接),我收到一条来自远程服务器的消息,他说我必须登录以查看这些页面。这很奇怪,因为我已经登录,否则无法看到仪表板。

使用IE和Safari时会出现问题但使用Chrome或Firefox时却没有...我的网站和远程服务器不使用SSL ...现在我们很多天都在调查排除故障但没有成功。我在不同位置使用Window和Ubuntu下的不同PC进行测试......那太疯狂了......: - (

使用的代码下方......有人知道为什么我只能使用某些特定的浏览器来解决问题?

<?php
    $api_key = '123-my-api-key-456';
    $admin_email = 'my@email.com';
?>

<?php
    $response_raw = null;
    $api_url = "http://www.remote-server.com/rest/?api_key=$api_key&method=get_login_credentials&email=$admin_email";
    if (function_exists('curl_init')) {
        $cs = @curl_init($api_url);
        if ($cs) {
            @curl_setopt ($cs, CURLOPT_RETURNTRANSFER, 1); 
            $response_raw = @curl_exec ($cs);
            @curl_close ($cs);
        }
    }
    if (!$response_raw)
        $response_raw = file_get_contents($api_url);

    $response_json = json_decode($response_raw, true);
    $login_hash = $response_json['data']['login_hash'];
    $user_id = $response_json['data']['user_id'];
    if ($_REQUEST['mbm_gotourl'])
        $iframe_url = $_REQUEST['mbm_gotourl'] . (strpos($_REQUEST['mbm_gotourl'], '?') === false ? "?" : "&") . "login_hash=".$login_hash."&user_id=".$user_id."&mbm_iframe=1";
    else
        $iframe_url = "http://www.remote-server.com/admin.php?custom-language=FR&login_hash=".$login_hash."&user_id=".$user_id."&mbm_iframe=1";

    if ($login_hash && $user_id) {
?>
    <iframe id='mbm_be_frame' src='<?php echo $iframe_url;?>' width='944' scrolling='no' frameborder='0' ></iframe>
    <script type='text/javascript' src='http://www.remote-server.com/mbm-be.js'></script>
<?php
    }
?>

1 个答案:

答案 0 :(得分:0)

好的,我终于找到了问题的原因。问题来自跨域cookie,由Safari以不同方式处理。这个问题给了我一些让我解决问题的线索:

Setting cross-domain cookies in Safari

所以在实践中,这不是卷曲问题,而是cookie问题......