使用 AngularJS 拦截器,是否可以在不检查 URL 的情况下区分我的应用程序对 $http 的调用(直接通过 $resource)与 Angular 本身对静态资源(如 View )的请求?
我在 HTTP 拦截器中添加自定义授权 header ,如下所示:
transparentAuthServices.factory('authHttpInterceptor',
function (localSessionStorage) {
return {
'request': function (config) {
if (!config.ignoreAuthInterceptor && localSessionStorage.hasSession()) {
var sessionId = localSessionStorage.getSession().sessionId;
config.headers['Authorization'] = 'ARTAuth sessionId="' + sessionId + '"';
return config;
} else {
return config;
}
}
}
};
});
它工作正常,但我不需要对静态资源的授权,而且我的服务器不检查它们。我可以检查 URL 并跳过以“/app”开头的 URL(在我的例子中),但我想知道是否有一个优雅的解决方案?
最佳答案
我的实验表明,在请求模板的情况下,config
对象有一个 cache
属性,以及对 config.cache.info() 的调用
将返回一个对象:
{id: "templates", size: 7}
这可能是不检查 URL 的唯一可靠方法。
我也尝试检查堆栈跟踪,但没有成功 - 很难找到任何合理的模式,当然不应该依赖它。
我仍然认为最好的方法是检查 URL。
关于javascript - 区分app调用$http和Angular在拦截器中请求静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869510/