2016-03-24 2 views
0

Я использую Angular 1.4.8 для получения данных от RESTfull API. Для аутентификации пользователей мы решили использовать пользовательский заголовок HTTP:Угловой запрос GET: запрос предполетной даты прерван

var requestConfig = { 
    headers: { 
     "authorization-token": "A317C3D6-74B1-DA99-FE55-8141E95D3085" 
    } 
}; 

Теперь я пытаюсь сделать запрос GET:

$http.get(config.apiUrl+'/api/v1/orders/', requestConfig).success(function(data){ 
     table.orders = data; 
    }); 

И увидеть следующие запросы в Firebug:

enter image description here

Я прочитал, что браузеры запрашивают эти предполетные ВАРИАНТЫ, если вы пытаетесь получить данные с другого сервера. В моем случае Угловое приложение находится на 127.0.0.1:80, а сервер Node.js находится на 127.0.0.1:6673, так что это запрос на перекрестный исход, как я понимаю

Если вы попытаетесь сделать запрос OPTIONS от завитка, вы получите этот ответ:

HTTP/1.1 200 OK 
X-Powered-By: Express 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: Cache-Control, Pragma, Origin, 
Authorization, Content-Type, X-Requested-With, authorization-token 
Access-Control-Allow-Methods: GET, PUT, POST, OPTIONS 
Allow: GET,HEAD,POST 
Content-Type: text/html; charset=utf-8 
Content-Length: 13 
ETag: W/"d-7cCV5tLYsy8ebraCH4f8nQ" 
Date: Thu, 24 Mar 2016 19:56:49 GMT 
Connection: keep-alive 

Итак, мои вопросы:

1) Почему запрос OPTIONS не вызывается, если удалить пользовательский заголовок HTTP?

2) Что отсутствует в ответе OPTIONS, почему он прерван?

UPD:

Вот заголовки из исходного запроса GET. Однако я не вижу заголовков OPTIONS.

enter image description here

UPD2:

Я был в состоянии получить это сообщение об ошибке от Chrome инструмента Dev для запроса OPTIONS:

net::ERR_CONNECTION_REFUSED 
+1

Постарайтесь ограничить себя одним вопросом на вопрос. Трудно сказать, какой ответ на ваш второй вопрос, потому что ваш вопрос не имеет контекста.Я бы предположил, что это потому, что вы переходите от страницы, но не можете сказать с информацией, которую вы предоставили. – Quentin

+0

Можете ли вы открыть вкладку сети в своих devtools и показать заголовки, ответ и запрос при совершении вызова из своего браузера? –

+0

@JoshBeam Спасибо за ответ. Я обновил свои вопросы с заголовками запросов – Tamara

ответ

0

Почему запрос OPTIONS не вызывается, если я удалить пользовательские HTTP-заголовок?

Пользовательские заголовки HTTP являются одним из триггеров, требующих предполета.

В частности, запрос preflighted если:

  • Он использует отличные от GET, HEAD или POST методы. Кроме того, если POST используется для отправки данных запроса с помощью Content-Type, отличного от application/x-www-form-urlencoded, multipart/form-data или text/plain, например. если запрос POST отправляет XML-полезную нагрузку на сервер с помощью приложения/xml или text/xml, тогда запрос предварительно заполняется.
  • Он устанавливает пользовательские заголовки в запросе (например, запрос использует заголовок, такие как X-PINGOTHER)

MDN

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