AngularJS对HTTP 401没有响应

时间:2015-03-24 04:26:26

标签: angularjs flask

我正在尝试捕获401发生的事件(过期令牌),因此我可以发送请求以使用新令牌重新授权用户。我的问题是当响应为401时未达到响应代码:

angular.module('app')
       .factory('authInterceptor',

function ($rootScope, $q, $window) {
  return {
    request: function (config) {
      config.headers = config.headers || {};
      if ($window.sessionStorage.token) {
        config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
        console.log('not 401');
      }
      return config;
    },
    response: function (response) {
      console.log(response.status);
      if (response.status === 401) {
        // handle the case where the user is not authenticated
        console.log('401 !!!!!!!');
      }
      return response || $q.when(response);
    }
  };
});

其他人通过不包括WWW-Authenticate标题解决了这个问题,我尝试了这个并且仍未调用响应函数。我正在考虑使用另一个状态代码解决问题,但我不愿意。

1 个答案:

答案 0 :(得分:1)

当响应为401时,这是一个错误(所有4x都是错误)。 您应该使用属性responseError来检查。

'responseError': function(rejection) {
      // do something on error
      if (canRecover(rejection)) {
        return responseOrNewPromise
      }
      return $q.reject(rejection);
    }

检查$http文档https://docs.angularjs.org/api/ng/service/ $ http