【发布时间】:2014-02-09 09:52:15
【问题描述】:
我想使用 Angular.js 在单页 Web 应用程序上实现身份验证。 official Angular documentation 推荐使用拦截器:
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
return {
// ...
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
问题是当服务器发送 401 错误时,浏览器立即停止并显示“未经授权”消息,或者登录弹出窗口(当服务器发送身份验证 HTTP 标头时),但 Angular 无法捕获它的按照建议拦截要处理的 HTTP 错误。我是不是误会了什么?我尝试了更多在网络上找到的示例(例如this、this 和this),但没有一个有效。
【问题讨论】:
-
你有没有想过这个问题?我遇到了完全相同的问题
-
这里一样,答案都不起作用,拦截器确实起作用,但异常仍然在拦截器之前抛出。这很奇怪吗?
-
我已经尝试了很多东西,我仍然无法捕捉到 401。你在哪里可以只用一个拦截器来做到这一点? (由于某种原因,它被翻译成 404)@windmaomao