AngularJS登录拦截程序崩溃chrome

AngularJS登录拦截程序崩溃chrome,angularjs,angular-ui-router,Angularjs,Angular Ui Router,除了登录页面,我的网站到处都使用AngularJS和UI路由器。为了在会话到期时将用户重定向到登录页面,我有以下拦截器 angular.module('myApp').factory('authInterceptor', ['$q', function ($q) { return { 'request': function (config) { return config || $q.when(config); },

除了登录页面,我的网站到处都使用AngularJS和UI路由器。为了在会话到期时将用户重定向到登录页面,我有以下拦截器

angular.module('myApp').factory('authInterceptor', ['$q', function ($q) {
    return {
        'request': function (config) {
            return config || $q.when(config);
        },

        'response': function (response) {
            if (response.status === 401) {
                window.location.href = "App/Signin";
                return $q.reject(response);

            } else {
                return response || $q.when(response);
            }
        },

        'responseError': function (rejection) {
            if (rejection.status === 401) {
                window.location.href = "App/Signin";
            }

            return $q.reject(rejection);
        }
    };
}]);

有时,该代码会导致Chrome陷入重定向循环并崩溃。单击“重新加载”按钮可解决此问题。我怀疑UI路由器正在捕获到登录页面的重定向,并试图将状态设置回默认状态。是否有一种方法可以重定向到登录页面而不受UI路由器的干扰?

重定向到登录页面会启动另一个重定向递归,从而导致循环

请添加以下内容以匹配您的场景

  if (response.status === 401 && $location.path() != 'App/Signin') 
要使其干净,请使用$state服务,例如:

  $state.go('login-signin-state')

登录页面不使用AngularJS和UI路由器,并且与我的单页应用程序分开,这就是为什么我使用window.location.href而不是$state.go().Hoo OK@user1,它修复了吗?没有-我仍然在Chrome中看到相同的崩溃。控制台中没有错误,但我看到了Chrome aw快照页面,如图所示。单击“重新加载”选项通常会解决此问题。刷新时,您会看到发送的重复请求,这是什么?我们也遇到了完全相同的问题。但这只发生在一些机器上。我们的大多数用户都没有出现问题,但有些用户每次都会出现问题,但他们可以在崩溃后刷新并恢复正常。找到答案了吗?