AngularJS:从$ http获取缓存结果

时间:2015-01-14 20:50:29

标签: javascript angularjs

我在使用$ http调用API时获得了缓存结果。这是AngularJS代码:

$scope.validate = function(){

    var encodedUserNameAndPassword = Base64.encode($scope.username + ':' + $scope.password);
    var decode = Base64.decode(encodedUserNameAndPassword);
    $http.defaults.headers.put = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
    'Access-Control-Allow-Headers': '*'
    };
            $http.defaults.headers.common['Authorization'] = 'Basic ' + encodedUserNameAndPassword;
$http({method: 'GET', url: 'http://127.0.0.1:5000/user/jim',cache:false}).
        success(function(data, status, headers, config) {
           console.log(data);
        }).
        error(function(data, status, headers, config) {
            alert(data);

        });
}

任何人都可以指出我所缺少的东西。

1 个答案:

答案 0 :(得分:0)

不要在控制器内部进行$ http提供程序修改。请在配置级别为angular。

var myModule = angular.module('myModule',[]);
myModule.config(['$httpProvider', function($httpProvider) {
    //initialize get if not there
    if (!$httpProvider.defaults.headers.get) {
        $httpProvider.defaults.headers.common = {};
    }
    $httpProvider.defaults.headers.common["Cache-Control"] = "no-cache";
    $httpProvider.defaults.headers.common.Pragma = "no-cache";
    $httpProvider.defaults.headers.common["If-Modified-Since"] = "0";
}]);

大多数时候,GET请求都是由IE缓存的。

然后在$ http调用参数

$http({method: 'GET', 
       url: 'http://127.0.0.1:5000/user/jim',
       headers: {
          'Authorization': 'Basic '+ encodedUserNameAndPassword}
          }
}).
success(function(data, status, headers, config) {
   console.log(data);
}).
error(function(data, status, headers, config) {
   alert(data);
});

希望这对你有所帮助。