2016-04-12 7 views
4

Я пытаюсь получить ответ от сервера. Функция выглядит так:получение статуса -1 вместо 401 Angularjs

function getOverview() { 
     var req = { 
      method: 'GET', 
      url: base, 
      headers: { 
       'authorization': 'Bearer ' + GottenTokens.getSessionToken() 
      } 
     }; 

     return $http(req).then(
      function successCallback(response) { 
       return response; 
      }, function errorCallback(response) { 
       console.log(response); 
       return response; 
      }); 
    } 

Когда статус 200, нет никаких проблем, она возвращает хороший отклик со статусом 200. Но ... когда статус 401, чем он возвращает ответ со статусом -1 :

Object {data: null, status: -1, config: Object, statusText: ""} 

Я пытался его почтальон, и я увидел там статус 401, а также в браузере он говорит так:

XMLHttpRequest cannot load http://localhost:5000/overview. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 401. 

это означает, что браузер и почтальон принять статус с сервера, но это не Приходите в Angularjs. Я пробовал этот пост: Capture Http 401, но это мне не помогает. У меня есть эта функция на «фабрике».

Кстати, сервер написан на akka. Я не знаю, есть ли у него что-то делать. Раньше это было в NodeJS, и у меня не было проблем. Поскольку это в акке, я не могу получить статус в Angularjs.

Может ли кто-нибудь мне помочь?

ответ

2

При выполнении кросс-сайтовых запросов серверу необходимо добавить во ВСЕ ответы действительный заголовок CORS. Это включает в себя ответы об ошибках типа 401.

Убедитесь, что вы видите заголовок "Access-Control-Allow-Origin" в своем ответе 401, скорее всего, он отсутствует.

+0

Да, это было :) Спасибо! –

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