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

请协助我实现,以继续执行此任务。

最佳答案

1)AngularJs旨在构建SPA,您不应重定向到另一个URL。您应该改为在当前页面中重定向到另一个路径。如果使用的是angular router,则将重定向到另一个状态。请查看此以获取更多信息:single page application deep linking with login page

2)因为浏览器会自动处理302响应并强制您的ajax函数将另一个ajax请求发送到位置以检索状态为200的最终结果。当用户未获得授权时,服务器应返回 401 Cannot handle 302 redirect in ajax and why?

客户端上的示例代码可处理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() });
    }
})

另一个带有$ http的示例代码,我建议在interceptors内部全局执行
$httpProvider.interceptors.push(function($q, $location) {
    return {
      'responseError': function(response) {
         if(response.status === 404){
             $location.path('your redirection path');
         }
         return $q.reject(response);
      }
    };
  });

3)为了设置您的请求 header ,您可以在$httpProvider.defaults.headersper request中全局设置它

关于angularjs - 使用angular设置标题和页面重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22577431/

10-16 17:44