javascript - 如何使用AngularJS拦截所有http请求?

标签 javascript angularjs angularjs-routing

我的问题是 this question 的更大更广泛的版本。我想拦截 AngularJS 函数内发出的所有 http 请求。稍后我需要更改请求 URL 并将其传递到服务器..

我怎样才能做到这一点?到目前为止,我已经使用 $httpProvider 和 $q 创建了一个拦截器,但我只能拦截 $http 请求,而不是所有请求,即如果有人单击我页面上的任何 href 链接等。我的拦截器代码是:-

// register the interceptor as a service
myModule.factory('myHttpInterceptor', function ($q) {
    return {
        // optional method
        'request': function (config) {
            // do something on success
            console.log("request success");
            return config;
        },
        // optional method
        'requestError': function (rejection) {
            // do something on error
            console.log("Request Error");
            if (canRecover(rejection)) {
                return responseOrNewPromise
            }
            return $q.reject(rejection);
        },
        // optional method
        'response': function (response) {
            // do something on success
            console.log("Response received");
            return response;
        },
        // optional method
        'responseError': function (rejection) {
            // do something on error
            if (canRecover(rejection)) {
                return responseOrNewPromise
            }
            return $q.reject(rejection);
        }
    };
});
myModule.factory('myInterceptor', ['$log', function ($log) {
        $log.debug('$log is here to show you that this is a regular factory with injection');

        var myInterceptor = {
        };

        return myInterceptor;
    }]);
myModule.config(['$httpProvider', function ($httpProvider) {
        $httpProvider.interceptors.push('myHttpInterceptor');
}]);

最佳答案

拦截其他页面的导航与拦截http请求不同。也许您想要的是拦截 $location 更改。

阅读本文。您可以这样做,但这取决于位置更改的位置。

http://uiadventures.wordpress.com/2013/09/06/routechange-angularjs/

关于javascript - 如何使用AngularJS拦截所有http请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27775189/

相关文章:

javascript - 错误: 508 (Loop detected)

javascript - 通过切换功能对数字进行 Angular 排序

javascript - 单击链接时如何定义路由以导航到详细信息页面

javascript - ajax 加载元素的事件处理

asp.net-mvc - 服务器端和客户端 MVC

javascript - ngFacebook 无法使用 phonegap

javascript - 如何从 Angularjs 中的对象数组中检索数据?

javascript - AngularJs - 路由解析函数无法识别工厂

javascript - $stateParams 空 ui 路由器

javascript - Protractor 期望语句返回数字而不是文本