我有一个拦截器接收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路由器。
答案 0 :(得分:2)
尝试删除$ q.reject(响应)。
如果响应返回401,则会自动拒绝