Angular $httpProvider 拦截器和 $resource

Angular $httpProvider Interceptor and $resource

我在 angular 中有一个简单的拦截器,它拦截请求并添加授权 header。它还会拦截 401 的响应错误,以了解请求是否因授权而失败。

不幸的是,它似乎与 $resource 混淆,因为我的 $resource 总是 return 调用成功回调并且从来没有错误(无论是 400 还是 500)。

它绝对是拦截器,因为如果我删除它,$resource 会使用正确的回调调用 return。

关于如何解决此行为的任何想法?

拦截器请求如下:

  function request(config) {
    var token = 'whatever-my-token-is';

    if (token) {
      config.headers.authorization = token;
    }

    return config;
  }

响应错误:

function responseError(response) {
  if (response.status === 401) {
    $rootScope.$broadcast('unauthorized');
  }

  return response;
}

感谢任何帮助

我认为你需要使用 promise 来 return 错误。
$q 添加到您的拦截器工厂。 像这样

$provide.factory('MyHttpInterceptor', function ($q){
   ...
})

然后有 responseError()

function responseError(response) {
  if (response.status === 401) {
    $rootScope.$broadcast('unauthorized');
  }

 return $q.reject(response);
}

这个 link 也可能有帮助 https://djds4rce.wordpress.com/2013/08/13/understanding-angular-http-interceptors/