Не видеть запросы Ajax в Firebug, если заголовок был изменен - PullRequest
1 голос
/ 24 марта 2010

Я делаю вызов ajax, используя библиотеку jQuery для API, которая требует добавления имени пользователя и пароля, закодированных в base64.

вот базовый пример:

$.ajax({
    type: "GET",
    contentType: 'application/json',
        beforeSend:function(xhr){
        xhr.setRequestHeader("Authentication", "Basic " + base64EncodedValue);
    }
    url: 'https://api.company.com/uri/',
    complete: function(result) {
       alert(result);
    }
});

Но когда это сработает, я получаю черный ящик с предупреждением, поэтому он не выглядит так, как будто что-то возвращается. В консоли Firebug нет лога, что был выполнен запрос get ajax.

Однако, если я удаляю параметр beforeSend, я вижу, что запрос ajax регистрируется, но запрос возвращается «не авторизован», поэтому он определенно попал в нужное место.

Любые идеи о том, почему он не отображается в Firebug, чтобы я мог убедиться, что заголовки отправляются правильно?

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Я бы сказал, это потому что у вас нет ',' до URL ...

$.ajax({
    type: "GET",
    contentType: 'application/json',
        beforeSend:function(xhr){
        xhr.setRequestHeader("Authentication", "Basic " + base64EncodedValue);
    }
    ,url: 'https://api.company.com/uri/',
    complete: function(result) {
       alert(result);
    }
});

может ошибаться, но это мое предположение,

*

Andrew * 1006

0 голосов
/ 12 марта 2012

Только что была похожая проблема, похоже, JQuery не поддерживает установку заголовка аутентификации для междоменного запроса.

У меня было, в скрипте служил с порта 80:

    $.ajax({
        beforeSend : function(req) {
            req.setRequestHeader('Authorization', auth);
        },
        url: 'http://localhost:8282/Blahblah',
        success: function(data) {
          console.log("data=" + data);
        }
    });

И я не видел, чтобы заголовок Autorization был установлен в запросе. Я изменил это на

    $.ajax({
        beforeSend : function(req) {
            req.setRequestHeader('Authorization', auth);
        },
        url: 'http://localhost/Blahblah',
        success: function(data) {
          console.log("data=" + data);
        }
    });

Кажется, что происходит то, что JQuery обнаруживает, что это междоменный запрос (в моем случае из-за разницы в порте, в вашем случае, вероятно, из-за другого хоста?), И молча переключается на JSONP, который не поддержка Basic Auth.

См Как сделать вызов JSONP с JQuery с базовой аутентификацией?

Я понимаю, что ваш вопрос устарел, но Google взял меня сюда, и он мог бы принять других здесь.

...