如何在Angular 6中设置拦截器标头

时间:2018-08-07 10:07:26

标签: cors angular6 angular-http-interceptors preflight

我正在尝试使拦截器正常工作,但是我遇到了一个问题,不知道ti在哪里。这是我的拦截器代码:

cmds.polyExtrudeFacet

每次尝试请求时,都会看到this

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表示为expected,但仍然会出现错误。

如果我删除了拦截器并要求在服务器上进行身份验证,则请求将转到through(PS:请忽略这些无关的错误)。

所以我假设这不是CORS问题。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您在起飞前获得重定向-因此请求被中止。如您所见,您在非期权请求中得到301。我可以得出结论,服务器未配置为正确允许CORS-它应该向OPTIONS请求推送简单答案(或有意拒绝它),但事实并非如此-服务器正在像GET请求一样重定向。

PREFLIGHT请求不是您可以控制的事情-它们是由浏览器发出的,服务器必须正确处理这些请求-浏览器否则将拒绝执行此请求。