Angular 设置 header 授权的拦截器在 api 的 return 中导致错误
Angular interceptor to set header authorization causes error in return of api
我创建了一个拦截器来设置header授权:
.config(['$httpProvider', function($httpProvider) {
var httpAuthInterceptor = [ 'AuthStateService', function(AuthStateService) {
return {
'request': function(config) {
var user = AuthStateService.getCurrentUser();
var token = AuthStateService._getToken();
if (token) {
config.headers['Authorization'] = 'Basic' + user + ':' + token;
}
return config || $q.when(config);
}
};
}];
$httpProvider.interceptors.push(httpAuthInterceptor);
}]);
所以,当我调用下面的服务时,服务(数据)的return OK 3次(OKOKOK)。
.factory("connectAPI", ['$http', 'config', 'loginAPI', function($http, config, loginAPI){
var _connect = function(callBack){
var param = {
user: loginAPI.getUser(),
pass: loginAPI.getPass()
};
$http.get(config.baseUrl + 'connect/user/' + param.user + '/pass/' + param.pass)
.success(function(data){
callBack(data);
})
.error(function(data, status, headers, config){
console.log(data, status, headers, config);
});
};
return {
connect: _connect
};
}])
我的api方法:
@Path("user/{user}/pass/{pass}")
@GET
@Produces({ MediaType.APPLICATION_JSON + ";charset=utf-8"})
public String getUserData(@PathParam("user") String user, @PathParam("pass") String pass) {
if (user != "" && pass != ""){
//test
return "OK"
}
return "NOK"
}
我已经检查过了 api 方法被调用了 3 次。我不知道发生了什么。
当我评论 header 授权行时,api 方法仅调用 1 次。怎么了?
.config(['$httpProvider', function($httpProvider) {
var httpAuthInterceptor = [ 'AuthStateService', function(AuthStateService) {
return {
'request': function(config) {
var user = AuthStateService.getCurrentUser();
var token = AuthStateService._getToken();
//if (token) {
// config.headers['Authorization'] = 'Basic' + user + ':' + token;
//}
return config || $q.when(config);
}
};
}];
$httpProvider.interceptors.push(httpAuthInterceptor);
}]);
我意识到这是我的 web.xml 中的一个问题,我无意中复制了我的过滤器。
我创建了一个拦截器来设置header授权:
.config(['$httpProvider', function($httpProvider) {
var httpAuthInterceptor = [ 'AuthStateService', function(AuthStateService) {
return {
'request': function(config) {
var user = AuthStateService.getCurrentUser();
var token = AuthStateService._getToken();
if (token) {
config.headers['Authorization'] = 'Basic' + user + ':' + token;
}
return config || $q.when(config);
}
};
}];
$httpProvider.interceptors.push(httpAuthInterceptor);
}]);
所以,当我调用下面的服务时,服务(数据)的return OK 3次(OKOKOK)。
.factory("connectAPI", ['$http', 'config', 'loginAPI', function($http, config, loginAPI){
var _connect = function(callBack){
var param = {
user: loginAPI.getUser(),
pass: loginAPI.getPass()
};
$http.get(config.baseUrl + 'connect/user/' + param.user + '/pass/' + param.pass)
.success(function(data){
callBack(data);
})
.error(function(data, status, headers, config){
console.log(data, status, headers, config);
});
};
return {
connect: _connect
};
}])
我的api方法:
@Path("user/{user}/pass/{pass}")
@GET
@Produces({ MediaType.APPLICATION_JSON + ";charset=utf-8"})
public String getUserData(@PathParam("user") String user, @PathParam("pass") String pass) {
if (user != "" && pass != ""){
//test
return "OK"
}
return "NOK"
}
我已经检查过了 api 方法被调用了 3 次。我不知道发生了什么。
当我评论 header 授权行时,api 方法仅调用 1 次。怎么了?
.config(['$httpProvider', function($httpProvider) {
var httpAuthInterceptor = [ 'AuthStateService', function(AuthStateService) {
return {
'request': function(config) {
var user = AuthStateService.getCurrentUser();
var token = AuthStateService._getToken();
//if (token) {
// config.headers['Authorization'] = 'Basic' + user + ':' + token;
//}
return config || $q.when(config);
}
};
}];
$httpProvider.interceptors.push(httpAuthInterceptor);
}]);
我意识到这是我的 web.xml 中的一个问题,我无意中复制了我的过滤器。