2013-12-23 82 views
1

我正在開發使用電話差距,HTML5和jQuery的IPAD應用程序。我的web服務使用表單身份驗證構建在ASP.NET WEBAPI上。在訪問API時,身份驗證窗口會詢問用戶名和密碼。提供用戶名和密碼後,我們可以得到結果。但是,當使用jquery ajax來使用相同的服務時,會出現錯誤消息「未授權」。任何人都可以幫助解決這個問題。消費使用jQuery的授權asp.net webapi服務ajax

腳本塊,其中I M訪問的URL

$.ajax({ 
    type: 'POST', 
    url: 'https://myservice.com/api/mypostmethod', 
    data: { 
     'item': ItemXml, 
     'room': RoomXml 
     'User_Id': 12313 
    }, 
    success: function (result) { 
     ProcessResponse(result); 
    }, 
    error: function (xhr, textStatus, error) { 
     console.log("Local To Live - " + xhr.statusText); 
     console.log("Local To Live - " + textStatus); 
     console.log("Local To Live - " + error); 
    } 
}); 

如何調用這個服務?我也嘗試用戶jQuery的xhr標題和使用的代碼如下

function getAuthorizationHeader(username, password) { 
     var authType; 

     if (password == "") { 
      authType = "Cookie " + $.base64.encode(username); 
     } 
     else { 
      var up = $.base64.encode(username + ":" + password); 
      authType = "Basic " + up; 
     }; 
     return authType; 
    }; 



$.ajax({ 
       type: 'POST', 
       url: 'https://myservice/api/mypostmethod', 
       data: { 
        'item': '', 
        'room': '', 
        'User_Id': 12313 
       }, 
       beforeSend: function (jqXHR, Settings) { 
        var AuthHeaders = getAuthorizationHeader("username", "password"); 
        jqXHR.setRequestHeader("Authorization", AuthHeaders); 
       }, 
       success: function (result) { 
        ProcessSyncResponse(result); 
       }, 
       error: function (xhr, textStatus, error) { 
        alert("Error - StatusCode : "+xhr.status); 
       } 
      }); 

請幫助解決這個問題。 謝謝。

回答

0

如果您使用表單身份驗證,請參閱this article以查看如何通過AJAX調用使用表單。確保您通過HTTPS與服務進行通信,否則您將遇到重大安全問題。

我認爲更好的解決方案是實施某種形式的令牌認證,因此您不會在請求中傳遞用戶名/密碼,也不必與服務器保持某種有狀態的連接。你應該看看這個。