我正在尝试基于
this tutorial授权AJAX查询.它使用Crypto库在发送之前使用适当的授权信息设置请求标头.我遇到的问题是标头似乎没有按要求设置.这是我的代码:
beforeSend : function(xhr) { var bytes = Crypto.charenc.Binary.stringToBytes(username + ":" + password); var base64 = Crypto.util.bytesToBase64(bytes); xhr.setRequestHeader("Authorization","Basic " + base64); },
解决方法
问题是没有将dataType设置为JSONP.由于没有这样做,浏览器将该调用解释为标准的AJAX请求,这意味着它在同源策略下被阻止.
工作代码供参考(赠送给@pdeschen以建议Crpyto):
<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>