AngularJS-处理NGINX返回的502/503错误
我在AngularJSV1.4中使用http拦截器来捕获400402403500502503个错误。我能够处理从后端服务器返回的4xx和500错误,但当我们无法到达后端服务器(例如502/503)时,该怎么办?我正在使用nginx为我的angular应用程序提供服务,这是返回502/503的地方吗?如果是这样,angular还能从nginx截获这些错误吗?我在我的拦截器中定义了502/503,但是如果我创建了一个从nginx返回502的位置,我的拦截器就不会捕获它 nginxAngularJS-处理NGINX返回的502/503错误,angularjs,nginx,angular-http-interceptors,http-error,Angularjs,Nginx,Angular Http Interceptors,Http Error,我在AngularJSV1.4中使用http拦截器来捕获400402403500502503个错误。我能够处理从后端服务器返回的4xx和500错误,但当我们无法到达后端服务器(例如502/503)时,该怎么办?我正在使用nginx为我的angular应用程序提供服务,这是返回502/503的地方吗?如果是这样,angular还能从nginx截获这些错误吗?我在我的拦截器中定义了502/503,但是如果我创建了一个从nginx返回502的位置,我的拦截器就不会捕获它 nginx location
location ~/502 {
default_type text/html;
return 502;
}
拦截器
function responseErrorFactory(storageFactory, $q, $injector, $log) {
/* jshint validthis: true */
var vm = this;
var opened = false;
return {
responseError: responseError
};
function responseError(response) {
var stateService = $injector.get('$state');
var modalService = $injector.get('$uibModal');
var translateService = $injector.get('$translate');
var serverErrors = [500,502,503,504];
var clientErrors = [400,403,404];
var title;
var message;
var code = null;
if ((serverErrors.indexOf(response.status) != -1) || (clientErrors.indexOf(response.status) != -1) || (response.status === -1)) {
if(!opened) {
if(clientErrors.indexOf(response.status) != -1) {
code = response.data.code ? response.data.code : response.status;
var titlePromise = translateService('locales.catch_all_errors.server.title', {CODE: code});
var messagePromise = translateService('locales.catch_all_errors.server.message');
message = translateService('locales.backend_error.' + code);
}
if(serverErrors.indexOf(response.status) != -1) {
code = response.data.code ? response.data.code : response.status;
var titlePromise = translateService('locales.catch_all_errors.server.title', {CODE: code});
var messagePromise = translateService('locales.catch_all_errors.server.message');
}
if(response.status === -1) {
var titlePromise = translateService('locales.catch_all_errors.response.title');
var messagePromise = translateService('locales.catch_all_errors.response.message');
}
$q.all([titlePromise, messagePromise]).then(function(data) {
title = data[0];
message = message ? message : data[1];
vm.modalInstance = modalService.open({
templateUrl: 'components/modal/error.html',
controller: 'errorController',
controllerAs: 'mvm',
size: 'md',
resolve: {
title: function() {
return title;
},
message: function() {
return message;
},
code: function() {
return code;
}
}
});
opened = true;
vm.modalInstance.result.then(function(resultCallBack) {
opened = false;
if(resultCallBack) {
resultCallBack();
}
});
});
}
} else {
return $q.reject(response);
}
}
}