Restangular:addResponseInterceptor 不起作用

Nap*_*ter 2 angularjs restangular

我正在从事 angularjs 项目。

app.js中,我使用addResponseInterceptor来拦截对服务器的每个请求。如果响应中没有错误(response.status == 200 OK),那么它就完美了。但我特别想在(response.status == 401)时进行拦截。在这种情况下,我想将用户重定向到登录页面。但这不起作用。

这是我的app.js addResponseInterceptor 的代码:

RestangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
        if (response.status === 401)
        {
            window.location = 'To the login page';
        } else
        {
            var extractedData;
            extractedData = data;
            return extractedData;
        }
    });
Run Code Online (Sandbox Code Playgroud)

当请求拒绝获取数据时,我收到这些错误

在此输入图像描述

我尝试通过“ console.log(response) ”调试响应,但它没有显示任何内容。看起来如果响应中有错误,那么它不会进入拦截器块。

har*_*shr 5

你需要的是 error-intecetpr。下面的例子

Restangular.setErrorInterceptor(function(response, deferred, responseHandler) {
    if(response.status === 403) {
        refreshAccesstoken().then(function() {
            // Repeat the request and then call the handlers the usual way.
            $http(response.config).then(responseHandler, deferred.reject);
            // Be aware that no request interceptors are called this way.
        });

        return false; // error handled
    }

    return true; // error not handled
});
Run Code Online (Sandbox Code Playgroud)