我的问题是关于$resource
的拦截器(responseError)。我想强调一下,我基于的angularjs是V1.3.6
。
问题:
app.factory('authInterceptor',['$q', '$location', '$log', function($q, $location, $log){
$log.debug('this is a regular factory with injection');
return {
responseError: function(response){
console.log(response)
// problem is that I cant check 401 by response.status,
// because the response here is AN ERROR OBJECT like `SyntaxError: ...`. Anyway to get the status?
return $q.reject(response);
}
}
}])
当我收到 401 响应时,responseError
的参数是一个错误对象,如 SyntaxError: Unexpected token U
因为来自服务器的响应是纯文本 Unathorized
状态为 401
。
但我想获取 response.status
,如果是 401
则执行一些操作。
我们将不胜感激。
最佳答案
这个问题应该关闭,因为我终于找到了答案。
当响应为 401/404 和 200 以外的任何内容时,transformResponse
仍会执行并且发生错误!这个错误只是覆盖了正常的响应(有状态属性),所以我从来没有在拦截器中得到原始响应!
如果响应的状态不是 200,我认为执行 transformResponse
是愚蠢的!在 transformResponse
中,您无法访问状态代码...
关于javascript - Angularjs(1.3.6+) $resource 拦截器和全局 401 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27772740/