【发布时间】:2021-08-13 14:37:33
【问题描述】:
我使用forkJoin 处理多个请求。它运行良好。
但是在我添加拦截器之后,它就停止工作了。
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = localStorage.getItem('token');
if (token) {
request = request.clone({
url: request.url,
setHeaders:
{ Authorization: `Bearer ${token}`,
'Access-Control-Allow-Origin': '*'
}
});
return next.handle(request);
} else {
this.router.navigate(['/login']);
return next.handle(request);
}
}
forkJoin 代码:
const s0 = return this.http.get < IEntityOne > ('u1');
const s1 = return this.http.get < IEntityTwo > ('u2');
forkJoin([s0, s1]).subscribe(
([v1, v2]) => {
console.log(v1); // <-------- This line of code is never reached
}
)
经过谷歌搜索,我将代码更改为
return next.handle(request).pipe(take(1));
但是还是不行。
【问题讨论】:
-
也许还有别的:检查网络选项卡。有错误
CORS error,不过我加了。 -
Access-Control-Allow-Origin不是你作为前端应该添加的东西;这是一个服务器配置 -
但是为什么没有拦截器就没有CORS错误?添加之后,问题发生了吗?输出后端应该已经添加了 CORS。
-
因为使用拦截器,您正在添加
'Authorization'标头,并且您的服务器由于某种原因不喜欢该令牌。真的可能有很多原因;也许您还发送了一些过期的 cookie?不过,您可能需要仔细检查语法;您似乎没有在引号中使用Authorization。此外,当您将鼠标悬停在选项卡上的 CORS 错误上时,它会说什么?没有访问控制允许来源? -
是的,所以如果你用谷歌搜索错误,你会看到它是一个服务器配置
标签: angular http rxjs angular-http-interceptors