重定向时角度刷新浏览器

Angular refresh browser on redirect

本文关键字:刷新 浏览器 重定向      更新时间:2023-09-26

运行angularjs应用程序时,可能会从服务器端撤回用户访问权限。在这种情况下,每个请求都会导致http 302重定向和登录html(无部分)页面。由于angular确实期望它所请求的任何内容,以防仍然提供访问权限,因此它会中断,因为它可能期望一个json字符串,但会获得html登录页。

我能做些什么吗?捕捉这个事件(听重定向,弄清楚html是否返回,等等)并对重定向url进行"硬"刷新?

由于您不能干扰ajax 302响应并重定向到错误页面,因此您需要有点创造性。

您可以向相关响应添加一个标头或不同的响应代码,并在客户端添加一个拦截器
拦截器是每个ajax请求/响应都要经过的模块
您可以添加将查找该标头的代码,并简单地对登录页面执行$window.location.href

阅读此处有关拦截器的信息
看看这个例子-它处理401个响应。

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

如果是这样的话,你可以自己转换响应,并检查它是否有效的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!
});