处理angularjs $http中的重定向
我在我的应用程序中使用
angularjs http服务.我在
website发现了这个
显然,重定向状态代码不是成功的一部分,也不是错误回调. 这是我的脚本所做的,使用http get从服务器获取数据.如果会话过期,服务器返回302状态码.我应该抓住这个状态代码,然后将页面重定向到登录. app.controller('GraphController',function($scope,$http,localStorageService,$interval) { $scope.GraphData = [{"key":"in","values":[]},{"key":"out","values":[]}]; $scope.pollStats = function() { $http.get('/statistics/getStat').success(function(lastData,status,headers) { if (status==302) { //this doesn't work //window.location=headers('Location'); //this doesn't work either window.location.replace(headers('Location')); }else if (status==200) { ...processData } }); }; }); 显然,我的脚本不会工作,因为成功回调无法处理重定向.那么我们应该如何处理呢?
请注意,这是特定于我的项目.
目标:捕获302状态代码并重定向页面(登录我的情况). 结果:在firebug中,我可以看到响应代码是302,但是我发现angularjs只需打印status(response.status)的值即可返回200.所以起初你以为你没有希望.但在我的情况下,我所做的是获取数据(response.data),寻找只能在我的登录页面中找到的字符串.那就是这样问题解决:D 这个想法是在这里. 这是代码 app.factory('redirectInterceptor',function($q,$location,$window){ return { 'response':function(response){ if (typeof response.data === 'string' && response.data.indexOf("My Login Page")>-1) { console.log("LOGIN!!"); console.log(response.data); $window.location.href = "/login.html"; return $q.reject(response); }else{ return response; } } } }); app.config(['$httpProvider',function($httpProvider) { $httpProvider.interceptors.push('redirectInterceptor'); }]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs中使用ng-repeat渲染最后一个li的时候设置不同样式
- oop – 为什么我不能在Scala中的类的伴随对象中访问私有类方
- angularjs – Angular $编译与所需的控制器
- angularjs – 用于MEAN应用的Yeoman子发生器?
- angular – 服务相互依赖
- 如何将文件从Windows主机复制到Docker容器
- Scala中的伴随对象不与案例类相关联
- 使用Angular 2的Cordova应用程序
- bootstrap 4 carousel caption在小型设备上不可见
- scala – 关于Future.firstCompletedOf和Garbage Collect机