2016-12-11 2 views
0

Я пытаюсь произвести запрос HTTP с заголовком Authorization:Не удалось добавить заголовок HTTP

$.ajax({ 
      type: 'GET', 
      url: "https://subdomain.domain.com/login", 
      beforeSend: function (xhr) { 
       xhr.setRequestHeader ("Authorization", "Basic " + btoa('username' + ":" + 'password')); 
      }}) 

но запрос, который производится с помощью этого кода не содержит заголовок авторизации:

OPTIONS/Логин HTTP/1.1

Ведущий: subdomain.domain.com

соединения: держать-жив

Pragma: нет кэша

Cache-Control: нет кэша

Access-Control-Request-метод: GET

Происхождение: http://localhost:3021

User-Agent: Mozilla/5,0 (X11; Linux x86_64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/12.3.4567.890 Safari/537,36

Access-Control-Request-Headers: авторизация

Accept: /

Referer: http://localhost:3021/app.html

Accept-Encoding: GZIP, выкачать, SDCH, уш

Accept-Language: EN-US, ан; д = 0,8, он; д = 0,6

Что я делаю неправильно?

+0

Вы использовали тэг 'headers' в синтаксисе запроса AJAX ??? –

+0

@ShalinPatel нет, что вы имеете в виду? не могли бы вы привести мне пример? – Alon

+0

как 'headers: {" Authorization ":" Basic "+ btoa ('username' +": "+ 'password')}' –

ответ

0

Проблема была в том, что я пытался сделать запрос на междоменный сервер, который не разрешает CORS.

Таким образом, запрос, который я видел, был запросом предполетной проверки, который использовал метод OPTIONS. Если в этом предполетном запросе я получил правильный заголовок CORS ответа, я бы посмотрел заголовок авторизации в реальном запросе. Но так как я не передал запрос OPTIONS предполетной проверки, у меня не было реального запроса, и поэтому я не видел заголовок авторизации.

Я решил это, используя API, используя Node.js, а не браузер.

0

Это может решить вашу проблему.

$.ajax({ 
    type: 'GET', 
    url: "https://subdomain.domain.com/login", 
    headers : { 
       "Authorization" : "Basic " + btoa('username' + ":" + 'password') 
    } 
}) 
Смежные вопросы