防止IE缓存AngularJS / Restangular
发布时间:2020-12-17 17:21:14 所属栏目:安全 来源:网络整理
导读:在IE中,当我更新或销毁列表中的项目时,操作成功,但更新的列表/数据不会从服务器返回,因此列表未在视图中更新. 我试过以下无济于事: angular.module('casemanagerApp').config(function($stateProvider,$urlRouterProvider,RestangularProvider) { if (!Rest
|
在IE中,当我更新或销毁列表中的项目时,操作成功,但更新的列表/数据不会从服务器返回,因此列表未在视图中更新.
我试过以下无济于事: angular.module('casemanagerApp')
.config(function($stateProvider,$urlRouterProvider,RestangularProvider) {
if (!RestangularProvider.setDefaultHeaders) {
RestangularProvider.setDefaultHeaders({});
}
RestangularProvider.setDefaultHeaders({'If-Modified-Since': 'Mon,26 Jul 1997 05:00:00 GMT'});
RestangularProvider.setDefaultHeaders({'Cache-Control': 'no-cache'});
RestangularProvider.setDefaultHeaders({'Pragma': 'no-cache'});
$stateProvider
...
});
有人能指出我正确的解决方案吗? 解决方法
我建议配置$httpProvider而不是RestangularProvider,因为Restangular在幕后使用$http:
angular.module('casemanagerApp')
.config(function($stateProvider,$httpProvider) {
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon,26 Jul 1997 05:00:00 GMT';
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get.Pragma = 'no-cache';
//...
});
编辑 我只是通读了restangular.js代码,而setDefaultHeaders函数看起来好像没有附加更多的头文件但是覆盖了默认的头文件: object.setDefaultHeaders = function(headers) {
config.defaultHeaders = headers;
object.defaultHeaders = config.defaultHeaders;
return this;
};
这意味着您只设置了“Pragma”标头,这可能不足以阻止缓存. 您可以尝试执行以下操作: RestangularProvider.setDefaultHeaders({
'If-Modified-Since': 'Mon,26 Jul 1997 05:00:00 GMT','Cache-Control': 'no-cache','Pragma': 'no-cache'
});
这种方式只有Restangular调用会添加标题,而常规的http调用则不会. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
