Вопрос по ajax, jquery – Ajax-аутентификация с помощью jQuery

5

Я могу получить запрошенный XML с

curl -X GET -u username:password url

но не с

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


        });

Нет ошибок JavaScript, нет проблем междоменной политики. Это может быть синтаксическая ошибка, но мне пока не удалось найти приличный учебник. Любые предложения, пожалуйста?

@fotis вы можете рассказать о команде curl? это в любом браузере? Я должен что-то скачать? Royi Namir
возможный дубликатHow to use Basic Auth and Jquery and Ajax ManseUK
@RoyiNamir Этоphp command но вы можете запустить его на терминале Linux. Fotis Adamakis

Ваш Ответ

3   ответа
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;
}
@ Ройи Намир, после пробелаAuthorization, который не может установить заголовок.
Не должен ли это быть пароль вместо передачи в функцию
почему я получаю переполнение стека с этим решением? :) Что я могу сделать не так?
1

вы должны использовать функцию beforeSend Jquery Ajax для добавления заголовка авторизации

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) {


     });
если это было указано в другом ответе - почему бы не добавить этот ответ вместо добавления того же ответа?!?!
2

beforeSendВы могли бы использоватьheaders свойство добавитьauthorization заголовок.

$.ajax({
    type: 'GET',
    url: 'url',
    dataType: 'json',
    headers: {
        "Authorization": make_base_auth(user, password)
    }
    success: function () {});
});

Похожие вопросы