我有一个有效的角度拦截器服务,可以通过服务调用从401响应重定向到登录页面
问题是401仍然在Google Chrome控制台中显示为JavaScript错误
GET http://domain:port/api/url 401 (Unauthorized) ... angular.js:9658
这是chrome的功能,还是我需要以另一种方式处理?
我的工作拦截器服务的内容如下
var _request = function (config) {
/*insert auth headers*/
}
var _responseError = function (rejection) {
if (rejection.status === 401) {
$location.path('/login');
}
return $q.reject(rejection);
}
var _response = function (response) {
return response || $q.when(response);
}
提前感谢您提供任何帮助
答案 0 :(得分:1)
似乎你误解了[Angular interceptor]的机制。
出于全局错误处理,身份验证或任何类型的目的 请求或的同步或异步预处理 对响应进行后处理,希望能够进行拦截 在将它们传递给服务器之前请求以及之前的响应 它们被移交给发起这些的应用程序代码 请求。
拦截器的目的是在将响应移交给应用程序代码之前对其进行预处理,这意味着它位于浏览器和您的个人代码之间。由于服务器响应401错误,浏览器肯定会将其视为401未授权,将其标记为红色并将日志写入console
面板。
然后,Angular Interceptor从浏览器接收http响应数据,并按照您的要求对其进行预处理。完成所有这些操作后,您的$http
调用将收到最终响应对象。
是的,这是浏览器的一个功能。如果您认为错误消息令人讨厌并且您不希望用户看到它,您可以将响应代码重写为其他人(如0,600,任何与所有HTTP响应代码不冲突的内容),然后在拦截器中处理它们。这是一个技巧。