我有一个拦截器,接收401(未授权)。
一切看起来都不错,但是当我发出一个请求时,拦截器被解雇了两次,非常奇怪。
App.factory('HttpResponseInterceptor', ['$q', '$injector', '$location','ModalService', function ($q, $injector, $location, ModalService) {
return {
responseError: function (response) {
if (response.status === 401) {
console.log("401");
}
return $q.reject(response);
}
}
}]);
App.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('HttpResponseInterceptor');
}]);
我进入chrome调试控制台“ 2 401”,这意味着它被触发了两次
这是触发网络调用的代码。它仅触发一次,我通过小提琴进行了检查。
控制器:
angular.module('App')
.controller('HomeCtrl',['$scope','$http', function ($scope, $http) {
$scope.Open = function () {
$http.get('/Home/GetSum').
then(function (response) {
alert(response);
});
}
}])
和视图:
<button ng-controller="HomeCtrl" ng-click="Open()">OPEN</button>
请注意,我正在使用Ui路由器。
最佳答案
尝试删除$ q.reject(response)。
如果响应返回401,则会自动拒绝
关于javascript - Angular ErrorInterceptor触发两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32441621/