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/
我在 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/