如何防止internet explorer在angular2、typescript中缓存ajax请求?

如何防止internet explorer在angular2、typescript中缓存ajax请求?,ajax,http,angular,caching,typescript,Ajax,Http,Angular,Caching,Typescript,场景是用户有一些分数,比如说10分。所以,在点击按钮之后,会向服务器发送一个ajax get调用,在用户使用该调用时更新用户的点。所以,服务器应该发送9,它在除Internet Explorer之外的所有浏览器上都工作。搜索之后,我发现IE甚至没有发出请求,它正在缓存该请求。如何解决这个问题 先走一步 一种可能的方法是实现一个HTTP拦截器,并在带有URL的请求已经执行时附加一个时间戳 @Injectable() export class CustomHttp extends Http {

场景是用户有一些分数,比如说10分。所以,在点击按钮之后,会向服务器发送一个ajax get调用,在用户使用该调用时更新用户的点。所以,服务器应该发送9,它在除Internet Explorer之外的所有浏览器上都工作。搜索之后,我发现IE甚至没有发出请求,它正在缓存该请求。如何解决这个问题


先走一步

一种可能的方法是实现一个HTTP拦截器,并在带有URL的请求已经执行时附加一个时间戳

@Injectable()
export class CustomHttp extends Http {
  urls: {string:string} = {};

  get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    if (this.urls[url]) {
      options = options || {};
      options.search = options.search || new URLSearchParams();
      options.search.set('timestamp', (new Date()).getTime());
    }

    return super.get(url, options).do(() => {
      this.urls[url] = true;
    });
  }
}
@Injectable()
导出类CustomHttp扩展了Http{
URL:{string:string}={};
获取(url:string,options?:RequestOptionsArgs):可观察{
if(this.url[url]){
选项=选项| |{};
options.search=options.search | |新建URLSearchParams();
options.search.set('timestamp',(newdate()).getTime());
}
返回super.get(url,选项).do(()=>{
this.url[url]=true;
});
}
}

一种可能的方法是实现一个HTTP拦截器,并在带有URL的请求已经执行时附加一个时间戳

@Injectable()
export class CustomHttp extends Http {
  urls: {string:string} = {};

  get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    if (this.urls[url]) {
      options = options || {};
      options.search = options.search || new URLSearchParams();
      options.search.set('timestamp', (new Date()).getTime());
    }

    return super.get(url, options).do(() => {
      this.urls[url] = true;
    });
  }
}
@Injectable()
导出类CustomHttp扩展了Http{
URL:{string:string}={};
获取(url:string,options?:RequestOptionsArgs):可观察{
if(this.url[url]){
选项=选项| |{};
options.search=options.search | |新建URLSearchParams();
options.search.set('timestamp',(newdate()).getTime());
}
返回super.get(url,选项).do(()=>{
this.url[url]=true;
});
}
}

如果您对服务器代码具有控制权,则应设置不允许缓存的相应标头

您可以设置标题

Cache-Control: no-cache
Expires: -1 

如果您对服务器代码具有控制权,则应设置不允许缓存的适当标头

您可以设置标题

Cache-Control: no-cache
Expires: -1