使用jQuery进行Ajax身份验证

时间:2012-04-19 10:39:03

标签: jquery ajax

我可以用

收到请求的xml
curl -X GET -u username:password url

但不是

$.get('url',
        {username:"username",password:"password"},
        function (data) {


        });

没有javascript错误,没有跨域政策问题。 这可能是一个语法错误但我找不到一个体面的教程。 有什么建议吗?

3 个答案:

答案 0 :(得分:21)

我认为你需要简单的格式:

$.ajax({
    type: 'GET',
    url: 'url',
    dataType: 'json',
    //whatever you need
    beforeSend: function (xhr) {
        xhr.setRequestHeader('Authorization', make_base_auth(user, password));
    },
    success: function () {});
});

function make_base_auth(user, password) {
    var tok = user + ':' + password;
    var hash = btoa(tok);
    return 'Basic ' + hash;
}

答案 1 :(得分:2)

作为headers的替代方法,您可以使用authorization属性添加$.ajax({ type: 'GET', url: 'url', dataType: 'json', headers: { "Authorization": make_base_auth(user, password) } success: function () {}); }); 标题。

public_key

答案 2 :(得分:1)

正如另一个答案所指出的那样,你应该使用Jquery Ajax的beforeSend函数来添加授权头

function setAuthHeader(xhr){
            var creds = username + ':' + password;
            var basicScheme = btoa(creds);
            var hashStr = "Basic "+basicScheme;
            xhr.setRequestHeader('Authorization', hashStr);
    }

  $.get('url',
         beforeSend: setAuthHeader,
        function (data) {


     });