2014-10-29 2 views
4

Я создал простой перехватчик для перенаправления пользователя на страницу входа, так как сервер возвращает ошибку 401. Он не работает, хотя, поскольку статус устанавливается как 404, поэтому $ location никогда не вызывается.AngularJs httpprovider.interceptors responseError имеет неправильный статус

.config(function myAppConfig($stateProvider, $urlRouterProvider, $httpProvider) { 
    $urlRouterProvider.otherwise('/login/authorize'); 

    $httpProvider.interceptors.push(['$location', function($location) { 
     return { 
      responseError: function(rejection) { 
       console.log(rejection); 
       switch (rejection.status) { 
        case 401: 
         $location.path('/login/refresh'); 
       } 
      } 
     }; 
    }]); 
}) 

enter image description here

+0

Вы решили это? В моем случае переменная отклонения не заполняется вообще. Мой объект отклонения выглядит следующим образом: {data: "", status: 0, headers: function, config: Object, statusText: ""} – zszep

+0

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

+0

:-) Я тоже. Объект ошибки не был заполнен, когда я отправил 401 из моего модуля nancyfx, поэтому в своем угловом коде я предположил, что код состояния 0 равен 401. – zszep

ответ

2

Я не уверен, если это так в вашей ситуации @ Mike, как вы фактически получаете код ошибки - просто не правильный ... Но, возможно, следующее родственный ...

Что касается @zszep и его вопроса о статусе 0, у меня также возникла эта проблема, и я считаю, что это, вероятно, связано с ошибками, возникающими с вашего сервера, не имеющими заголовки CORS, как обсуждалось здесь - https://github.com/angular/angular.js/issues/3336

Это было для меня - просто хотел опубликовать его здесь, если это помогло кому угодно.

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