iT邦幫忙

0

請問Postman,REST Clinet與ajax的authorization之間的差異

各位先進好:

我遇到了一個使用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應該如何才能達到這樣可以預設登入認證資訊且使用可立即登入認證的効果呢?

fillano iT邦超人 1 級 ‧ 2016-09-09 11:20:24 檢舉
https://blog.toright.com/posts/3205/%E5%AF%A6%E4%BD%9C-cross-origin-resource-sharing-cros-%E8%A7%A3%E6%B1%BA-ajax-%E7%99%BC%E9%80%81%E8%B7%A8%E7%B6%B2%E5%9F%9F%E5%AD%98%E5%8F%96-request.html
vt167098 iT邦新手 5 級 ‧ 2016-09-10 10:49:55 檢舉
謝謝您的回覆, 我也有試著參考這篇文章的方式處理, 問題還是沒有解決, 後來是請系統管理員調整apache上的設定後, 已經可以正常訪問了, 謝謝.

尚未有邦友回答

立即登入回答