当拦截器中没有设置标头时,我的 GET、POST 请求工作正常。如果我在拦截器中使用 setHeaders 来设置我的 userId 数据,我可以在 Network 选项卡中看到两件事:
- 没有看到之前可见的响应标头
- api 请求中的 CORS 错误和“显示临时标头”标记
代码(拦截器)
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// return next.handle(apiRequest);
this.spinnerServcie.requestStarted();
const user_id = this.loginService.userDetails["user_id"];
if (!(user_id === undefined || user_id === null || user_id === '')) {
request = request.clone({
headers: request.headers.set( 'userId', user_id.toString())
});
}
return next
.handle(request)
.pipe(tap((event) => {
if (event instanceof HttpResponse) {
this.spinnerServcie.requestEnded();
}
},
(error: HttpErrorResponse) => {
this.spinnerServcie.resetSpinner();
throw error;
}));
它对 GET 工作正常,但对 POST 失败。我也仅将 HTTPClient 用于请求