我正在使用手机差距,HTML5和jQuery开发IPAD应用程序。我的webservice是基于带有表单身份验证的ASP.NET WEBAPI构建的。访问api时,身份验证窗口要求输入用户名和密码。提供用户名和密码后,我们可以得到结果。但是在使用jquery ajax消耗相同的服务时,错误抛出了“Unauthorized”消息。任何人都可以帮助解决这个问题。
我访问网址的ScriptBlock
$.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 :(得分:0)
如果您已开始使用表单身份验证,请查看this article以获取有关如何通过AJAX调用使用它的示例。确保您通过HTTPS与服务进行通信,否则您将遇到严重的安全问题。
我认为更好的解决方案是实现某种令牌身份验证,这样您就不会在请求中传递用户名/密码,也不必维护与服务器的某种状态连接。你应该研究一下。