Заголовки запроса авторизации Ajax снова и снова не работают - PullRequest
6 голосов
/ 22 марта 2012

Я работаю над потребителем для самодельного API и испытываю серьезные трудности с настройкой Авторизационного заголовка .Я использую JQuery для запросов Ajax, но 'beforeSend' вообще не работает (для проверки запросов используется fiddler )

Это мой код beforeSend:

    $.ajax({
     type: "GET",
     url: url+"/Projects",
     contentType: "application/json; charset=utf-8",
     beforeSend: function (req) {
        req.setRequestHeader("Authorization", AuthBuilder(username, password));
     },
     success: function (result) {
        alert("success");
     },
     error: function (xhr, ajaxOptions, thrownError) {
        alert("fail");
     }
 });

Ну, если это не поможет, что ты делаешь?Вернитесь к старому способу отправки ajax-запросов ... ну, это тоже не работает ...

Это мой обычный код:

function GET(address, callback, error) {
Request = getXMLHttpObject();
Request.open("GET", url + address, true);

var base64 = Base64.encode(username + ":" + password);
alert(base64);
Request.setRequestHeader("Authorization", "Basic " + base64);

Request.send();
Request.onreadystatechange = function () {
    //alert(Request.readyState+" code "+Request.status);
    if (Request.readyState == 4 && Request.status == 200) {
        callback(jQuery.parseJSON(Request.responseText));
    } else if (Request.readyState == 4 && Request.status >= 400) {
        error(Request.status, Request.statusText);
    }
} 
}

Не обращайте внимания на фактчто я не спрашиваю json специально, потому что сервис возвращает json по по умолчанию .

В дополнительной информации:

  • происхождение не имеет значения, сервисразрешает все источники (было проверено и подтверждено)
  • Авторизация работает при установке заголовками (проверено в других клиентах)
  • Заголовки авторизации просто не отправляются
  • AuthBuilder(имя пользователя, пароль)) дает правильный формат содержимого заголовка Basic Auth
  • , getXMLHttpObject () - это всего лишь некоторый код копирования и вставки, который работал до

любые мысли?

1 Ответ

1 голос
/ 23 марта 2012

Ну, я выяснил, в чем проблема.Самодельный сервис отправил это обратно клиенту в виде глобального заголовка: «Access-Control-Allow-Headers» с только «Content-Type» в нем.

Таким образом, наши клиенты не используют User Agent(браузер) проигнорировал эти заголовки и все равно отправил заголовок.Но браузер попытался оптимизировать запрос и сказал: «Он не примет заголовок авторизации, поэтому я просто обрежу его перед отправкой».таким образом, пакет меньше, и служба все равно не разрешит его (хотя это было сделано ...)

Так что просто добавление «Авторизации» в часть службы «Разрешить заголовки контроля доступа» сделало мой Javascript /Запросы JQuery / Ajax отправляют заголовок запроса как обычно!

...