0

サブドメイン間の Ajax リクエストに問題があります。

リクエストを処理する PHP スクリプトは次の場所にあります。account.domain.com/login

他にも多くのサブドメインがあり、すべてのサブドメインで Ajax リクエストを呼び出すことができます。

現在私が持っているJavascriptは次のとおりです。

            $.ajax({
                type: "POST",
                url: "http://account.domain.com/login",
                data: "username=" + username + "&password=" + password + auto,
                crossDomain: true,
            }).done(function(data){
                alert(data);
                //window.location.replace(data);
            });

問題は、そうでない別のサブドメインにいるときにこれを呼び出すとaccount.domain.com、スクリプトが失敗することです。(アラートは表示されません)。

Tamper Data でリクエストが行われたかどうかを確認しましたが、Response Header State 200 で行われています。

PHP:

//Process Login
if(count($_POST)){
    $username = isset($_POST['username']) ? $_POST['username'] : false;
    $password = isset($_POST['password']) ? $_POST['password'] : false;
    $auto = isset($_POST['auto']) ? true : false;

    $main->login($username,$password,$auto);
    if($main->has_error()){
        $_SESSION['NoteMsgs'] = $main->error();
        $return = $main->link['login'];
    }else{
        //PHPBB Login
        // Start session management
        $user->session_begin();
        $auth->acl($user->data);
        $user->setup();

        if($user->data['is_registered']){
            //User is already logged in
        }else{
            $result = $auth->login($username, $password, $auto);
            if ($result['status'] == LOGIN_SUCCESS){
                //User was successfully logged into phpBB
            }else{
                //User's login failed
            }
        }
        if(isset($_POST['returnUrl'])){
            $return = filter_var($_POST['returnUrl'], FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED);
            if($return == $main->opt['http_root'] or $return == $main->opt['http_root'].'/' or $return == $main->link['login'] or $return == $main->link['login'] .'/'){
                $return = $main->link['return'];
            }
        }else{
            $return = $main->link['return'];
        }
    }
    echo $return;
    exit;
}

何が問題なのですか?ありがとうございました。

4

1 に答える 1

-1

type request を実行したり、 iframe を使用したりするなど、多くのオプションがありますが$.post JSONP、ワークフローを変更するのが最も簡単な方法だと思います。

ローカル JS は、json データで POST メソッドを受け入れるローカル URL に ajax 投稿を行います。この時点で、サーバー コードはリモート サーバーに対して適切なデータを使用して HTTP POST を実行し、応答を取得して、呼び出し元の js に送り返します。

于 2013-09-17T09:43:16.897 に答える