1

ユーザーテキストボックスを持ち、テキストボックスを渡す単純なフォームがphpにあり、login.phpと呼びます。私は別のphpページを持っています.sendtologin.phpと呼びましょう.jquery ajax経由で資格情報を「送信」してlogin.phpに投稿したいと思います. login.php は server1 にあり、sendtologin.php は server2 にあります。sendtologin.php を読み込もうとすると、ステータス コード 0 とエラーが表示されます。これが私のスクリプトです。

$(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "http://server1/login.cgi",
            data: { lang_changed: "no", username: "me", password: "me" },
            success: function (data) { alert("success!"); },
            error: function (request, type, errorThrown) {
                alert("request: " + request.status + 
                      "\nrequestText: " + request.statusText +
                      "\nType: " + type + 
                      "\nException: " + errorThrown); }
        });
    });

私は何を間違っていますか?

4

2 に答える 2

1

最善の策は、ログイン資格情報を「login.php」に渡し(ajax呼び出しと同じサーバー上にある場合)、PHPのcURL関数を使用して、投稿された変数を2番目のドメインの「login2.php」に渡すことです。

私はこのゲートウェイ/パススルー手法ALOTを使用しており、これらの厄介なクロスドメインポリシーの問題を回避するために機能します。

于 2012-09-18T22:22:40.087 に答える
0

私もこの問題にぶつかりました。問題は、Ajax 呼び出しの目的は、セキュリティ上の理由から単一のサーバーで動作することです。そのため、他のサーバーに呼び出しを送信しても応答が得られないため、"成功」メソッドは機能しません。これは、server1 がデータを受信しなかったという意味ではありませんが、データが正しかったかどうかを検証することはできません。

別の解決策は、server1 のデータベースにログイン情報がある場合、php を使用してデータベースに接続し、オリジン サーバーへのアクセスを許可し、そのデータベース接続に基づいてすべての ajax 呼び出しを行うことができます。

于 2012-09-18T22:28:18.953 に答える