【问题标题】:Angular $httpProvider Interceptor and $resourceAngular $httpProvider 拦截器和 $resource
【发布时间】:2016-10-31 07:43:35
【问题描述】:

我有一个简单的 Angular 拦截器,可以拦截请求并添加授权标头。它还会截取 401 的响应错误,以了解请求是否因为授权而失败。

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

它肯定是拦截器,因为如果我删除它,$resource 调用会返回正确的回调。

关于如何解决此问题的任何想法?

这是拦截器请求:

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

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

    return config;
  }

还有 responseError:

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

  return response;
}

任何帮助表示赞赏

【问题讨论】:

    标签: javascript angularjs http resources interceptor


    【解决方案1】:

    我认为您需要使用承诺来返回错误。
    $q 添加到您的拦截器工厂。 像这样

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

    然后有 responseError()

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2014-06-07
      • 2019-02-09
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多