1

jQueryのライブラリを使用してAPIへのajax呼び出しを行っています。これには、base64にエンコードされたユーザー名とパスワードをヘッダーに追加する必要があります。

基本的な例を次に示します。

$.ajax({
    type: "GET",
    contentType: 'application/json',
        beforeSend:function(xhr){
        xhr.setRequestHeader("Authentication", "Basic " + base64EncodedValue);
    }
    url: 'https://api.company.com/uri/',
    complete: function(result) {
       alert(result);
    }
});

しかし、これが発火すると、黒い警告ボックスが表示されるので、何かが戻ってくるようには見えません. get ajax リクエストが実行されたという Firebug コンソールのログはありません。

ただし、 beforeSend オプションを削除すると、ajax リクエストがログに記録されますが、リクエストは「許可されていません」と返されるため、間違いなく適切な場所に到達します。

ヘッダーが正しく送信されていることを確認できるように、Firebug に表示されない理由についてのアイデアはありますか?

4

2 に答える 2

1

URLの前に「、」がないためだと思います...

$.ajax({
    type: "GET",
    contentType: 'application/json',
        beforeSend:function(xhr){
        xhr.setRequestHeader("Authentication", "Basic " + base64EncodedValue);
    }
    ,url: 'https://api.company.com/uri/',
    complete: function(result) {
       alert(result);
    }
});

間違っているかもしれませんが、私の推測では、

アンドリュー

于 2010-03-24T20:05:30.910 に答える
0

同様の問題が発生したばかりですが、JQuery はクロスドメイン リクエストの認証ヘッダーの設定をサポートしていないようです。

私は、ポート 80 から提供されるスクリプトで、次のことを行いました。

    $.ajax({
        beforeSend : function(req) {
            req.setRequestHeader('Authorization', auth);
        },
        url: 'http://localhost:8282/Blahblah',
        success: function(data) {
          console.log("data=" + data);
        }
    });

そして、リクエストに Autorization-header が設定されているのを見ませんでした。に変更しました

    $.ajax({
        beforeSend : function(req) {
            req.setRequestHeader('Authorization', auth);
        },
        url: 'http://localhost/Blahblah',
        success: function(data) {
          console.log("data=" + data);
        }
    });

起こっているように見えるのは、JQuery がこれがクロスドメイン要求であることを検出し (私の場合はポートの違いのため、あなたの場合はおそらく別のホストのためですか?)、基本認証をサポートしていない JSONP に静かに切り替えることです。 .

基本認証を使用して JQuery で JSONP 呼び出しを行うにはどうすればよいですか? を参照 してください。

あなたの質問が古いことは承知していますが、Google は私をここに連れて行ってくれました。

于 2012-03-12T14:12:08.647 に答える