搜索

首页  >  问答  >  正文

angular.js - angularjs中的拦截器会拦截哪些请求?

在angularjs中添加拦截器,发现$http发出的请求会拦截,但$window.location.href确不会拦截,想请问一下拦截器是不是只拦截$http发出的请求?

滿天的星座滿天的星座2750 天前732

全部回复(4)我来回复

  • 为情所困

    为情所困2017-05-15 17:15:17

    官方文档解释的比较清楚,也有示例
    https://docs.angularjs.org/ap...$http

    // register the interceptor as a service
    $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
      return {
        // optional method
        'request': function(config) {
          // do something on success
          return config;
        },
    
        // optional method
       'requestError': function(rejection) {
          // do something on error
          if (canRecover(rejection)) {
            return responseOrNewPromise
          }
          return $q.reject(rejection);
        },
    
    
    
        // optional method
        'response': function(response) {
          // do something on success
          return response;
        },
    
        // optional method
       'responseError': function(rejection) {
          // do something on error
          if (canRecover(rejection)) {
            return responseOrNewPromise
          }
          return $q.reject(rejection);
        }
      };
    });
    
    $httpProvider.interceptors.push('myHttpInterceptor');
    
    
    // alternatively, register the interceptor via an anonymous factory
    $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
      return {
       'request': function(config) {
           // same as above
        },
    
        'response': function(response) {
           // same as above
        }
      };
    });

    回复
    0
  • 高洛峰

    高洛峰2017-05-15 17:15:17

    跳转到新的页面不执行拦截器中的代码

    回复
    0
  • 怪我咯

    怪我咯2017-05-15 17:15:17

    我记得是html 与 接口请求,之前console.log过

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:15:17

    所谓 $window 其实是对浏览器 window 对象的引用的二次包装,那为什么会有这个东东呢?目的主要是为了代码可测试性。

    所以,结论是这玩意跟 $http 一点关系都没有,自然也不会走拦截器

    当然,我还是挺懂题主,无非就是希望在做跳转时做一些额外的事情。这个问题,只能从路由方面去解决了。

    以上!

    回复
    0
  • 取消回复