我使用Angular 6.1.10
和rxjs 6.3.3
。我有一些服务和此方法,当用户转到主页(“ /”)时会获取数据:
getCampaigns(): Observable<CampaignDto[]> {
return this.http.get<CampaignDto[]>(this.campaignsUrl)
.pipe(
tap(campaigns => console.log(`fetched ${campaigns.length} campaigns`)),
catchError(this.errorReporter.handleError('getCampaigns', []))
);
}
这是可行的,但是当我运行该应用程序并尝试通过快速按两次F5键刷新页面时,在浏览器控制台中出现错误: 开发模式:
如果在刷新前一页时缓慢按F5键,则没有错误!我伤了脑筋,为什么会发生这个错误?仅在Firefox浏览器60.4.0 esr和以下版本中可能发生错误,在Firefox和Chrome的最新版本上没有错误。任何帮助。
怎么了?也许这是rxjs
中的错误?这不是CORS
问题!我的前端和后端使用一个URL localhost:8080
。开发和生产模式中都存在问题。
更新:
我有TokenInterceptor
:
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
constructor(private inj: Injector) {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const auth = this.inj.get(AuthService);
const xAuthToken = auth.xAuthToken;
if (xAuthToken) {
console.log(`TokenInterceptor. Getting token: ${xAuthToken}`);
request = request.clone({
setHeaders: {
'x-auth-token': `${auth.xAuthToken}`
}
});
}
return next.handle(request);
}
}