javascript - AngularJs:排除来自拦截器的一些请求

标签 javascript angularjs

下面是我处理全局错误的拦截器。但是我想绕过一些http请求。有什么建议吗?

 var interceptor = ['$rootScope', '$q',function (scope, $q) {
        function success(response) {
            return response;
        }
        function error(response) {
            var status = response.status;
            if (status == 401) {
                window.location = "./index.html#/404";
                return;
            }
            if (status == 0) {
                window.location = "./index.html#/nointernet";
            }
            return $q.reject(response);
        }
        return function (promise) {
            return promise.then(success, error);
        }
    }];
    $httpProvider.responseInterceptors.push(interceptor);

最佳答案

我能够简单地通过向 $http 请求的配置对象添加一个属性来实现此功能。 IE。 忽略401。然后,在我的拦截器中,在响应错误处理程序中,检查配置对象上的属性,如果它存在,则不要转发到登录或您对 401 响应执行的任何其他操作。

首先是拦截器:

$provide.factory('authorization', function() {
    return {
        ...

        responseError: (rejection) => {
            if (rejection.status === 401 && !rejection.config.ignore401) {
                // redirect to login
            }

            return $q.reject(rejection);
        }
    };
});

然后,对于任何我想绕过 401 错误处理程序的请求:

$http({
    method: 'GET',
    url: '/example/request/to/ignore/401error',
    ignore401: true
});

希望对您有所帮助。

关于javascript - AngularJs:排除来自拦截器的一些请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21036786/

相关文章:

javascript - 如何使用 ng-class-even 和 ng-class-odd 拆分 ng repeat 中的 div 结构?

angularjs - Angucomplete Alt : Getting "No Results Found" before the server response is obtained

javascript - React 编译器不会接受我的 .map 函数作为函数

javascript - 浏览器在每个页面上添加相同的 Facebook 用户头像图像

javascript - WordPress 小部件中的动态输入字段

javascript - 如何在 Angular 或jquery中的嵌套div中的所有标签上添加事件

javascript - 为什么 Angular 中的 SVG 元素的模板渲染出现错误

javascript - 无法访问从 ng-repeat 调用的函数中的用户输入

javascript - 如何在 Javascript 中将整数转换为具有固定长度的十六进制?

javascript - PhantomJS .click() 不工作