AngularJS - 服务中的GET请求有时实际上不会命中服务器

时间:2016-03-20 18:54:43

标签: javascript angularjs node.js browser

我有一个带有函数getLoggedInUser的角度工厂服务,它向我的Node.js服务器发出GET请求。

最初加载页面时,它工作正常(当控制器调用getLoggedInUser时,该方法运行,并在服务器日志中记录路径/loggedInUser的GET请求)。

但是,当我点击浏览器(Firefox)中的back然后forward按钮时,服务方法确实会运行(其中包含console.log)但是没有出现此类GET请求服务器记录。

console.log$http.get的{​​{1}}以某种方式显示结果,即使没有GET请求到达服务器。

使用getLoggedInUserback时,为什么会这样?使用这些按钮时,浏览器是否重新制作任何http请求并仅使用缓存结果?如果是,如何在forward中为$http.get禁用此缓存行为? (我已经尝试getLoggedInUser作为{cache: false}的第二个参数,但它似乎没有用。)

在Angular.js客户端,服务:

$http.get

在Angular.js客户端,控制器:

// services/auth.js

angular.module('authService', [])

    .factory('Auth', ['$http', function($http) {

        return {
            register: function(username, password) {
                return $http.post('/register', {username: username, password: password});
            },
            login: function(username, password) {
                return $http.post('/login', {username: username, password: password});
            },
            logout: function() {
                return $http.get('/logout');
            },
            getLoggedInUser: function() {
                var resp = $http.get('/loggedInUser');
                console.log(resp);
                return resp;
            }
        };

}]);

在Node.js服务器中:

// controllers/main.js

angular.module('braidController', [])

    .controller('mainController', ['Auth', function(Auth) {

        var vm = this;


        // initialization

        vm.users = [];
        vm.selected_convo = undefined;
        vm.selected_user = undefined;
        vm.user_map = {};

        Auth.getLoggedInUser()
            .success(function(data) {
                vm.selected_user = data.user;
            });

    }]);

0 个答案:

没有答案