各位先進好:
我遇到了一個使用ajax做CORS的問題, 我需要透過ajax執行跨主機取一個XML格式的資料,
我在自己的電腦上使用Postman,REST Client去跨主機取資料(該主機需要登入認證,我有設
定basic authorization), 可以正常取得資料.
但我改採ajax的方式, 就會出現http 401的錯誤.
$(document).on('click', '#login', function() {
var UserName = $('#username').val();
var PassWord = $('#password').val();
console.log(UserName);
var tok = UserName + ':' + PassWord;
var auth = "Basic " + btoa(tok);
var url = 'http://servera/test_xml01.xml';
if (UserName) {
if (PassWord) {
$.ajax({
type: 'GET',
url: url,
dataType: "xml",
crossDomain: true,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(UserName + ":" + PassWord));
},
success: function(data) {
if (data.error == true) {
$("#dialog").html(data.message);
$("#dialog").dialog({
title: "Login"
});
$("#dialog").dialog("open");
} else {
//window.location = 'pages/dashboard.php';
console.log(data);
}
//window.location = 'pages/dashboard.php';
},
error: function(xhr,textStatus,errorThrown) {
alert('Login Error');
//window.location='../login.php';
}
});
} else {
$("#dialog").html("Password is empty!");
$("#dialog").dialog({
title: "Owner Information"
});
$("#dialog").dialog("open");
}
} else {
$("#dialog").html("Username is empty!");
$("#dialog").dialog({
title: "Login"
});
$("#dialog").dialog("open");
}
});
我的疑問是同樣都在我的電腦上執行, 如果直接執行 http://servera/test_xml01.xml , 輸入登入的帳號與密碼是可以正常執行, 用Postman設定basic authorization也可以正常work, 但ajax的方式就會有401的錯誤. 我猜是postman應該與直接輸入對方主機網址的操作是一樣的效果, 而用ajax應該如何才能達到這樣可以預設登入認證資訊且使用可立即登入認證的効果呢?