Angularjs 使用角度设置标题和页面重定向

Angularjs 使用角度设置标题和页面重定向,angularjs,Angularjs,我正在开发一个登录应用程序,在该应用程序中,我可以与REST接口进行通信,以验证用户。我正在使用$http执行此任务。现在,我需要将我的页面重定向到另一个URL(可能在同一个或不同的域上)。此外,我需要在这个过程中设置标题 请帮助我实施,以便继续执行此任务。您是否考虑阅读本手册 使用服务重定向并阅读$http文档,以了解如何设置标题 引述: $http服务将自动向所有请求添加某些http头。通过访问$httpProvider.defaults.headers配置对象[…],可以完全配置这些默认值

我正在开发一个登录应用程序,在该应用程序中,我可以与REST接口进行通信,以验证用户。我正在使用$http执行此任务。现在,我需要将我的页面重定向到另一个URL(可能在同一个或不同的域上)。此外,我需要在这个过程中设置标题


请帮助我实施,以便继续执行此任务。

您是否考虑阅读本手册

使用服务重定向并阅读$http文档,以了解如何设置标题

引述:

$http服务将自动向所有请求添加某些http头。通过访问$httpProvider.defaults.headers配置对象[…],可以完全配置这些默认值

SO社区的任何人都不太可能为您的问题提供完整的指南,因为所需的信息很容易获取。

1)AngularJs旨在构建SPA,您不应该重定向到其他url。您应该重定向到当前页面中的另一个路径。如果正在使用,则会重定向到另一个状态。有关更多信息,请查看此文件:

2) 因为浏览器会自动处理302个响应,并强制ajax函数向位置发送另一个ajax请求,以检索状态为200的最终结果。当用户未经授权时,服务器应返回401

客户端处理401状态代码(未授权)的示例代码:

另一个带有$http的示例代码,我建议在内部全局执行


3) 为了设置请求头,您可以在中全局设置它,或者如果需要转到另一个页面,请使用纯java脚本


window.location.href=..

你好,在我的情况下,我需要在用户成功登录后重定向到另一个域。目前,我的代码看起来像:$scope.createUser=function(){$http({method:'POST',url:'/ang/rest/login/authenticate',头:{'Content-Type':'application/json'},数据:$scope.user})。成功(function($location,$http){$http({方法:'GET',url:'',头:{'Authorization':'Basic dGVzdDp0ZXN0'}})@Jaspreet:如果你需要重定向到其他域,请处理401并使用
window.location.href
,关键是在使用ajax时必须处理401而不是302。要在同一页面中重定向,只需使用$state或$location。我还需要设置标题,如果我采用这种方法,我无法设置标题。这并没有回答关于e头。但是如果您需要重定向到另一台服务器中具有特定头的另一个页面怎么办?我知道您可以将头添加到
$http
请求中,但是如何在重定向
$location
?@Coyolero我认为这超出了Angular的目的。$location服务需要解析URL并使其可用可以使用特定的头重定向到另一个服务器(IMO也应该这样做),而不依赖Angular。不过,这只是我自己的观点。
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){ 
    if (error.status == 401) { // check for 401 status code
        $state.transitionTo("login", { returnUrl: $location.url() });
    }
})
$httpProvider.interceptors.push(function($q, $location) {
    return {
      'responseError': function(response) {
         if(response.status === 404){
             $location.path('your redirection path');
         }
         return $q.reject(response);
      }
    };
  });