控制$ http请求中的标头

时间:2017-07-19 16:17:36

标签: angularjs ajax caching

我在请求中遇到标头缓存问题。

我的资源看起来像是:

method: 'GET',
cache: false,
headers: {
  session: auth.mySession()
}

还配置了提供程序。

config(['$httpProvider', function($httpProvider) {
 if (!$httpProvider.defaults.headers.get) {
  $httpProvider.defaults.headers.get = {};
 }
 $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
 $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
 }]).

在实践中它不起作用。 请求在删除时与会话一起发送 它没有设置会话。 我必须按Ctrl + F5。

1 个答案:

答案 0 :(得分:1)

最后我意识到这不是关于缓存结果,而是自己缓存标题。

在页面初始化阶段只计算一次标题。 在那之后,我带来了拦截器解决方案,它总是将有效会话注入到请求的标题中。

config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push('injectingSessionInterceptor');
}]).
service('injectingSessionInterceptor', ['auth', function (auth) {
    var ser = this;
    ser.request = function (config) {
        var session = auth.mySession();
        config.headers.session = session;
        return config;
    };
}]);