2015-02-23 4 views
6

Похоже, что jQuery не отправляет по заголовку Authorization при отправке запроса OPTIONS перед запросом POST (или, возможно, другими типами). Сервер, к которому я пытаюсь добраться, возвращает статус 401 для запроса OPTIONS - как я могу заставить jQuery включить заголовок Authorization даже в этом первоначальном запросе?jQuery.ajax не отправляет заголовок авторизации с запросом OPTIONS

$.ajax({ 
    type: "POST", 
    url: url, 
    data: postData, 
    beforeSend: function ajaxBeforeSend(jqXHR) { 
     jqXHR.withCredentials = true; 
     jqXHR.setRequestHeader("Authorization", "Basic " + btoa(encodeURIComponent(escape($username.val())) + ":" + encodeURIComponent(escape($password.val())))); 
    }, 
    success: runReportUrlCallback, 
    error: runReportErrorCallback 
}); 

Я также попытался добавить username и password к параметрам AJAX, но безрезультатно.

+0

Возможный дубликат [Почему запрос запроса предварительной проверки запрошенного запроса CORS работает в Chrome, но не в Firefox?] (Http://stackoverflow.com/questions/15734031/why-does-the-preflight-options-request -of-an-authenticated-cors-request-work-in) – suish

+0

Похоже, что сервер, не требующий авторизации по запросу OPTIONS, является единственным способом его исправить. – suish

+0

Я не «владею» сервером. Это сторонний веб-сервис. –

ответ

3

Кажется, что сторонний сервер настроен неправильно без запроса ОПЦИИ.

W3 утверждает, что запрос предполетной OPTIONS должен:

Исключить учетные данные пользователя. определены

Учетные данные пользователя:

Термин учетные данные пользователя для целей данного описания означает куки, аутентификацию HTTP, и на стороне клиента SSL сертификаты

См https://www.w3.org/TR/cors/#cross-origin-request-with-preflight-0

Если сервер находится под вашим контролем, вы просто устанавливаете обработчик запросов OPTIONS перед вашей проверкой подлинности.

Если сервер НЕ находится под вашим контролем, что, кажется, имеет место здесь, то вы стонаете администратору сервера, объясняя, что они сделали это неправильно и надеются, что они его изменят.

Смежные вопросы