6

このチュートリアルに基づいて AJAX クエリを承認しようとしています。Crypto ライブラリを使用して、送信前に適切な承認情報を要求ヘッダーに設定します。私が抱えている問題は、要求に応じてヘッダーが設定されていないように見えることです。これが私のコードです:

beforeSend : function(xhr) {
  var bytes = Crypto.charenc.Binary.stringToBytes(username + ":" + password);
  var base64 = Crypto.util.bytesToBase64(bytes);
  xhr.setRequestHeader("Authorization", "Basic " + base64);
},
4

2 に答える 2

8

問題は を に設定していませんでしdataTypeJSONP。これが行われなかったので、ブラウザーは呼び出しを標準の AJAX 要求として解釈しました。つまり、同じオリジン ポリシーでブロックされていました。

参照用の作業コード (クレジットは、Crpyto を提案するための @pdeschen に送られます):

<script type='text/javascript'>
// define vars
var username = '';
var password = '';
var url = '';

// ajax call
$.ajax({
    url: url,
    dataType : 'jsonp',
    beforeSend : function(xhr) {
      // generate base 64 string from username + password
      var bytes = Crypto.charenc.Binary.stringToBytes(username + ":" + password);
      var base64 = Crypto.util.bytesToBase64(bytes);
      // set header
      xhr.setRequestHeader("Authorization", "Basic " + base64);
    },
    error : function() {
      // error handler
    },
    success: function(data) {
        // success handler
    }
});
</script> 
于 2012-07-23T09:31:02.607 に答える