javascript - 区分app调用$http和Angular在拦截器中请求静态资源

标签 javascript angularjs interceptor

使用 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/

相关文章:

AngularJS/CORS OPTIONS 请求和性能

Java拦截器处理REST API响应代码

jakarta-ee - Java EE 中的@Cacheable

java - REST资源异常拦截器

javascript - 使用移动 safari 浏览器时如何防止从缓存中重新加载网页?

javascript - 如何在 AngularJS 中从另一个 Controller 访问一个 Controller 的功能?

javascript - 我可以使用 Javascript 获取命令行信息吗?不是浏览器版本信息

javascript - 如何从 typescript 类访问此属性?

jquery - HttpStatusCodeResult.StatusDescription 有多可靠?

javascript - 为什么Angular.element常用而不需要注入(inject)?