5

私はここでstackoverflowに関する次の質問を見てきましたが、私がやろうとしていることに運がありませんでした。

AjaxAuthorizationRequestヘッダーが何度も失敗する

jQuery AjaxUnauthorized401エラー

クロスドメイン投稿でクレデンシャルを送信しますか?

これが私が現在持っている私のコードです:

    $(document).ready(function() {
        $.ajax({
            url: 'http://sample.domain.com/script.php?name1=value1&jsonp=?',
            type: 'GET',
            dataType: 'json',
            contentType: "application/json",
            beforeSend: function(xhr) {
                 xhr.setRequestHeader("Authentication", "Basic ZnJvbWFwcGx********uOnRoM24zcmQ1UmgzcjM=") //Some characters have been replaced for security but this is a true BASE64 of "username:password"
            },
            success: function(data){
                alert(data);
            }
        });
    });


</script>

私が持っているサブドメインは、.htpasswdファイルによってパスワードで保護されています。サイトのログインは、base64エンコードで使用されるユーザー名とパスワードの組み合わせを使用して問題なく機能します。

このスクリプトをURLが存在するドメインとは異なるドメインで実行しているので、jsonp =を使用していますか?URLで

ブラウザのコンソールから取得する応答は次のとおりです。 GET http://sample.domain.com/script.php?name1=value1&jsonp=jsonp1334177732136 401 (Authorization Required)

4

2 に答える 2

6

ヘッダー名は、で、「 」Authorizationを送信していますAuthentication

例えば

承認:基本QWxhZGRpbjpvcGVuIHNlc2FtBmU =

于 2013-08-16T20:21:07.660 に答える
4

JSONPはスクリプトタグプロキシを使用します。カスタムヘッダーはサポートされません。エンドポイントを管理していますか?その場合は、CORSの有効化を検討するか、GET文字列で認証キーを渡します。

jsonpを使用する場合、JQueryはURL「ajax」リクエストを次のように変換します。

<script src="[endpoint]"></script>

次に、ランダム関数を書き込みます

var json9409d0sf0d9s0df90 = function() {
     //some callback logic here.
}

そして、?callback=json9409d0sf0d9s0df90を追加します

あなたのサーバーはそれから言う

echo $_GET['callback] . "(" . $json . ")";

そしてそれを応答として送り返します

json9409d0sf0d9s0df90({some: data});

ブラウザによって実行され、通常のajaxコールバックのように応答するjQueryの魔法のハンドラーによって処理されます。

ちなみに、<script src=""></script>アセットの読み込みでは、標準のブラウザでカスタムヘッダーを使用することはありません。

于 2012-04-11T21:59:05.057 に答える