javascript - AngularJS 成功 401 拦截仍然抛出 401

标签 javascript angularjs restful-authentication http-status-code-401

我有一个正在运行的 Angular 拦截器服务,该服务在从服务调用接收到的 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);
}

预先感谢您的帮助

最佳答案

看来你误解了[Angular拦截器]的机制。

For purposes of global error handling, authentication, or any kind of synchronous or asynchronous pre-processing of request or postprocessing of responses, it is desirable to be able to intercept requests before they are handed to the server and responses before they are handed over to the application code that initiated these requests.

拦截器的目的是在将响应移交给应用程序代码之前对其进行预处理,这意味着它位于浏览器和您的个人代码之间。当服务器响应401错误时,浏览器肯定会将其视为401未授权,将其标记为红色并将日志写入console面板。

然后 Angular Interceptor 从浏览器接收 http 响应数据,并按照您的指示对其进行预处理。当所有这些完成后,您的 $http 调用将收到最终的响应对象。

所以是的,这是浏览器的一项功能。如果您认为错误消息很烦人并且不希望用户看到它,您可以将您的响应代码重写为其他代码(例如 0、600,任何不与所有 HTTP 响应代码冲突的内容),然后在拦截器中处理它们。这是一个技巧。

关于javascript - AngularJS 成功 401 拦截仍然抛出 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28375505/

相关文章:

javascript - 显示数组中的下一张和上一张图像并使用 Javascript 显示

javascript - 如何将基本身份验证 header 分配给 XMLHTTPREQUEST?

php - 使用基本的 http 身份验证在无脂框架上进行身份验证,如何?

javascript - Pinterest API - 超时

javascript - $ ('#' + somestring)。有什么不工作吗?

java - 我如何使用 Java 与 Selenium Webdriver 中的此输入框进行交互?

javascript - Angular : Set conditional min and max value for validation in number input field

angularjs - 获取 Resolve 的路由参数

javascript - 从 Web 应用程序生成设计好的 PDF 报告

java - JBoss5 CLIENT-CERT 身份验证获取 HTTP 状态 401 - 无法使用提供的凭据进行身份验证错误