在AngularJS / Node应用程序中,我正在使用拦截器在我的http请求中注入一个身份验证令牌:
.factory('AuthInterceptor', function($q, $location, AuthToken){
var interceptorFactory = {};
//
// Méthode pour propager le token d'identification dans les headers des pages web
//
interceptorFactory.request = function(config){
var token = AuthToken.getToken();
if (token){
config.headers['x-access-token'] = token;
}
return config;
};
//
// Méthode pour empécher la navigation si pas de token
//
interceptorFactory.responseError = function(response){
if (response.status == 403){
$location.path('/login');
}
return $q.reject(response);
};
return interceptorFactory;
});
但是,这种机制会阻止我的google api地理编码请求生效,因为我收到以下回复:
多源请求被阻止(跨源请求):“同源”策略不允许在http://maps.googleapis.com/maps/api/geocode/json?address=上接收远程资源。原因:CORS标题«Access-Control-Allow-Headers»中缺少“x-access-token”标记
所以,如果我的http请求离开我的网站,我试图阻止我的拦截器注入x-access-token,但是我无法获得我要求测试它的URL。
我们的想法是能够测试在http请求中调用哪个URL,如果不在我的服务器上,则不要添加x-access-token。
我试图在我的函数参数中添加AuthToken后的$ http,但是我得到了一个“循环错误”。
有人知道如何规避这个问题吗?
提前谢谢!