重定向角度刷新浏览器

时间:2015-04-09 07:57:20

标签: javascript angularjs authentication http-redirect

运行angularjs应用程序时,可能会从服务器端撤消用户访问权限。在这种情况下,每个请求都会产生一个http 302重定向和一个登录html(无部分)页面。因为在确实仍然会给出访问权限的情况下,angular确实期望它所请求的任何内容,它会因为它可能期望json字符串而中断而获取html登录页面。

我能做些什么来捕捉这个事件(听重定向,弄清楚是否返回html等)并做一个" hard"刷新重定向网址?

2 个答案:

答案 0 :(得分:1)

由于您无法干扰ajax 302响应并重定向到错误页面,因此您需要有点创意。

您可以在相关回复中添加标题或不同的响应代码,并在客户端添加拦截器 拦截器是每个ajax请求\响应的模块。
您可以添加将查找该标头的代码,并在登录页面上执行$window.location.href

阅读有关拦截器的here 检查this示例 - 它处理401响应。

答案 1 :(得分:0)

如果我说得对,你说的是来自AngularJS的$http服务。

如果这就是重点,你可以自己转换响应并检查它的valide JSON是否像这样:

$http({
    url: '...',
    method: 'GET',
    transformResponse: function (reponse) {
        var ret = [];//if the return stays empty, the repsonse may be HTML
        try {
            ret = JSON.parse(reponse);
        } catch (error) {
            //here you could check for the error
        }
        return ret;
    }
}).success(function(answer){
    if(answer.length === 0){//its empty, so its probably HTML
        $window.location.reload();//refresh page here
        return;
    }
    //its JSON with content!
});