對~沒有看錯!就是萬惡的IE~每次都有奇怪的行為…
這次遇到的是cache的問題,在angularJS就開始有這系列的問題出現
在angularJS是用$httpProvider
在angular中使用Http
的可以產生一個新的BaseRequestOptions
去覆寫
但是在HttpClient
中要怎麼使用呢?
很簡單,就是使用HttpInterceptor
我們要將req做clone然後重新設定header的內容,這樣就可以了
export class CustomHttpInterceptorService implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler):
Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
const nextReq = req.clone({
headers: req.headers
.set('Cache-Control', 'no-cache')
.set('Pragma', 'no-cache')
.set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT')
.set('If-Modified-Since', '0')
});
return next.handle(nextReq);
}
Module provide
@NgModule({
...
providers: [
...
{ provide: HTTP_INTERCEPTORS, useClass: CustomHttpInterceptorService, multi: true }
]
})