我正在尝试使拦截器正常工作,但是我遇到了一个问题,不知道ti在哪里。这是我的拦截器代码:
cmds.polyExtrudeFacet
import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import { AuthenticationService } from './../_services/index';
import { Observable } from 'rxjs/Observable';
import { AuthGuard } from './../_guards/auth.guard';
@Injectable()
export class Interceptor implements HttpInterceptor {
constructor(public auth: AuthGuard) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (this.auth.getToken()) {
console.log(this.auth.getToken());
request = request.clone({
setHeaders: {
Authorization: this.auth.getToken()
}
});
}
return next.handle(request);
}
}
如果删除拦截器,则会进行其他调用,并且将401表示为,但仍然会出现错误。
如果我删除了拦截器并要求在服务器上进行身份验证,则请求将转到(PS:请忽略这些无关的错误)。
所以我假设这不是CORS问题。有什么想法吗?
答案 0 :(得分:4)
您在起飞前获得重定向-因此请求被中止。如您所见,您在非期权请求中得到301。我可以得出结论,服务器未配置为正确允许CORS-它应该向OPTIONS请求推送简单答案(或有意拒绝它),但事实并非如此-服务器正在像GET请求一样重定向。
PREFLIGHT请求不是您可以控制的事情-它们是由浏览器发出的,服务器必须正确处理这些请求-浏览器否则将拒绝执行此请求。