问题不在于将 to 设置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>