2016-08-04 88 views
0

下面是我的發送請求功能:通過類似的東西直接無法發送授權頭使用Ajax

function invokeService() { 
     $(document).ready(function() { 
       var user = "User1"; 
       var pass = "Pwd1"; 


     var hash_str=make_base_auth(user, pass); 

     // the post to your webservice or page 
     $.ajax({ 
      method: "GET", 
      xhrFields: { 
       withCredentials: true 
      }, 
      beforeSend: function (xhr) { 
         xhr.setRequestHeader('Authorization', hash_str); 
       }, 
      headers: { 
       'Authorization': 'Basic ' + hash_str 
      }, 
      url: "http://Servername/ProjName/TestService.svc/GetDetails/" + $('#itemid').val(), 
      contentType: "application/json; charset=utf-8", 
      dataType: "jsonp" 



     }); 
    }); 
} 

我已經嘗試不同的方法,通過將用戶名和密碼:

$.ajax({ 
    method: "GET", 
    username: user, 
    password: pass, 
    ... 
}); 

並通過設置授權標題,但每一個領帶我檢查它在提琴手,Auth部分請求它聲明「沒有授權headerr存在」。它只是不發送它。任何人都可以幫我修復我的授權標題嗎?

下面是什麼提琴手的請求頭顯示出來:

GET /projName/TestService.svc/GetDetails/ABC123?callback=jsonpxxxxxxxxxxxxx HTTP/1.1 


Client 
Accept: application/javascript, */*;q=0.8 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US 
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) 

Transport 
Connection: Keep-Alive 
Host: ServerName 

回答

0

我用這個和正常工作(beforeSend回調的相關部分):

beforeSend: function (xhr) { 
         xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); 
       } 

BTOA編碼您的敏感數據在頭部。

希望它有幫助。

+0

它不是編碼是問題,它只是頭不發送 – ElenaDBA

+0

我明白了,但我記得有同樣的問題,當我試圖發送用戶身份驗證與你一樣的方式。 –