AngularJS成功401拦截还是抛出401
Posted
技术标签:
【中文标题】AngularJS成功401拦截还是抛出401【英文标题】:AngularJS Successful 401 Intercept Still Throws 401 【发布时间】:2015-04-07 04:04:43 【问题描述】:我有一个工作的角度拦截器服务,它在从服务调用接收到 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);
提前感谢您的帮助
【问题讨论】:
能否请您发布使用您上面发布的功能的代码。 【参考方案1】:您似乎误解了 [Angular 拦截器] 的机制。
用于全局错误处理、身份验证或任何类型的 请求的同步或异步预处理或 响应的后处理,希望能够拦截 在将请求传递给服务器之前并响应之前的请求 它们被移交给启动这些的应用程序代码 请求。
拦截器的目的是在将响应交给应用程序代码之前对其进行预处理,这意味着它位于浏览器和您的个人代码之间。由于服务器响应 401 错误,浏览器肯定会将其视为 401 未授权,将其标记为红色并将日志写入console
面板。
然后 Angular 拦截器从浏览器接收 http 响应数据,并按照您告诉它的方式对其进行预处理。当所有这些都完成后,您的$http
调用将收到最终的响应对象。
所以是的,这是浏览器的一项功能。如果您认为错误消息很烦人并且您不希望用户看到它,您可以将您的响应代码重写给其他人(例如 0、600,与所有 HTTP 响应代码不冲突的任何内容)然后在您的拦截器中处理它们.这是一个诡计。
【讨论】:
非常感谢...完整回答以上是关于AngularJS成功401拦截还是抛出401的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security 401 - 使用 / Angularjs 调用 restful 服务