使用angular设置标题和页面重定向

Jas*_*eet 6 angularjs

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

请帮我完成一项实施,以便继续执行此任务.

Kha*_* TO 5

1)AngularJs旨在构建SPA,您不应该重定向到另一个URL.您应该重定向到当前页面中的另一个路径.如果您使用角度路由器,您将重定向到另一个状态.请查看此信息以获取更多信息:单页面应用程序与登录页面的深层链接

2)因为浏览器自动处理302响应并强制你的ajax函数向Location发送另一个ajax请求以检索状态为200的最终结果.当用户未被授权时,你的服务器应返回401.无法在ajax中处理302重定向,为什么?

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

$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() });
    }
})
Run Code Online (Sandbox Code Playgroud)

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

$httpProvider.interceptors.push(function($q, $location) {
    return {
      'responseError': function(response) {
         if(response.status === 404){
             $location.path('your redirection path');
         }
         return $q.reject(response);
      }
    };
  });
Run Code Online (Sandbox Code Playgroud)

3)为了设置您的请求标头,您可以在$ httpProvider.defaults.headers每个请求中全局设置它


Wot*_*els -3

您是否考虑过阅读 Angular文档/API

使用$location服务进行重定向并阅读 $http 文档以了解如何设置标头。

引用:

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

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