在 app.js文件里注册httpProvider
服务 或者定义 angular.module('starter', [])
的文件
.config(function($httpProvider) {
$httpProvider.interceptors.push("httpInterceptor"); });
在定义 var app = angular.module('starter.controllers', [])
文件里定义拦截器
//定义http拦截器httpInterceptor,这个factory返回的对象可以拥有responseError,response,request,requestError这些属性,分别对应拦截的处理。
app.factory('httpInterceptor', [ '$q',function($q) {
var httpInterceptor = {
'responseError' : function(response) { //响应错误拦截
console.log(response,'response')
//这里可以对不同的响应错误进行处理,比如根据返回状态码进行特殊处理
switch(response.status) {
case 401: //token失效
localStorage.removeItem("gateway_token")
location.href = "#/tab/login"
break
case 404: //找不到地址
// localStorage.removeItem("gateway_token")
// location.href = "#/tab/login"
break
case 403: //没有权限
// localStorage.removeItem("gateway_token")
// location.href = "#/tab/login"
break
default:
return $q.reject(response)
}
return $q.reject(response);
},
'response' : function(response) { //响应拦截
//这里可以对所有的响应的进行处理
return response;
},
'request' : function(config) { //请求拦截
//这里可以对所有的请求进行处理
return config;
},
'requestError' : function(config){ //请求错误拦截
//这里可以对所有的请求错误进行处理
return $q.reject(config);
}
}
return httpInterceptor;
}])