0

ユーザーが 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
    }
?>
4

1 に答える 1

0

わかりました、ようやく問題の原因が見つかりました。この問題は、Safari によって異なる方法で処理されるクロス ドメイン Cookie に起因します。この他の質問は、問題を解決するための手がかりを与えてくれました:

Safari でのクロスドメイン Cookie の設定

したがって、実際には Curl の問題ではなく、Cookie の問題でした...

于 2013-05-03T19:04:51.767 に答える