消费使用jQuery AJAX授权asp.net的WebAPI服务(Consuming author

2019-10-19 03:57发布

我正在开发使用手机的差距,HTML5和jQuery iPad应用。 我的web服务在ASP.NET的WebAPI与窗体身份验证建成。 在访问API,验证窗口,询问用户名和密码。 提供用户名和密码后,就可以得到结果。 但同时消耗使用jQuery AJAX,错误与消息“未授权”引发的相同的服务。 能否在这个问题上的任何一个帮助。

脚本块在其即时通讯访问网址

$.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 );
                }
            });

请帮助解决这一问题。 谢谢。

Answer 1:

如果你正在使用窗体身份验证设置,看看这篇文章 ,了解如何在AJAX调用使用它的一个例子。 确保您有超过HTTPS服务进行通信,否则你就会有重大的安全问题。

我认为更好的解决办法是实现某种令牌认证的这样你就不会在你的要求中传递的用户名/密码,不必保持某种与服务器状态的连接。 你应该看看这个。



文章来源: Consuming authorized asp.net webapi service using jQuery ajax