2016-07-06 100 views

回答

0

在一个项目中,我们使用这种截取http错误的方式。在那里你可以重定向到登录页面(或任何你喜欢的)。

function httpInterceptor($provide, $httpProvider) { 
    function interceptorFunction($q) { 
     return { 
      responseError: function (rejection) { 
       if (typeof rejection.status !== 'undefined') { 
        if (rejection.status === 401) { 
         //Your app will handle 401 errors here... 
        } 
       } 
       return $q.reject(rejection); 
      } 
     }; 
    } 

    $provide.factory('httpInterceptor', interceptorFunction); 
    interceptorFunction.$injector = ['$q']; 
    $httpProvider.interceptors.push('httpInterceptor'); 

angular.module('app', dependencies) 
    .config(httpInterceptor); 

'app'模块是我们的'main'模块。应该发生401错误,尽管服务器应至少一次以该状态码作为响应。

+0

好的,谢谢。我其实只是实现了这一点,还没有测试过它。但是,这是否也会拦截laravel请求?即拦截所有http请求而不是通过$ http服务创建的请求? – Dmac

+0

这肯定会拦截每个$ http请求。我不知道你可以使角度应用程序不会使用$ http的Ajax调用。 $资源是依赖于$ HTTP也......如果你做一个香草的JavaScript调用它可能无法捕捉它(但为什么) – Rouz

+0

问题是与laravel @include不与角模板,虽然... – Dmac

相关问题