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

Cors 如何在Angular 6中设置拦截器标头,cors,angular6,angular-http-interceptors,preflight,Cors,Angular6,Angular Http Interceptors,Preflight,我正试图让拦截器工作,但我遇到了一个问题,我不知道ti在哪里。这是我的拦截器代码: import { Injectable } from '@angular/core'; import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http'; import { AuthenticationService } from './../_services/i

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

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);
    }
}
从'@angular/core'导入{Injectable};
进口{
HttpRequest,
HttpHandler,
HttpEvent,
http拦截器
}来自“@angular/common/http”;
从“/../\u services/index”导入{AuthenticationService};
从“rxjs/Observable”导入{Observable};
从“/../\u guards/auth.guard”导入{AuthGuard};
@可注射()
导出类拦截器实现HttpInterceptor{
构造函数(公共auth:AuthGuard){}
拦截(请求:HttpRequest:

加载失败http://localhost:5000/api/stocks?all=true: 飞行前的响应无效(重定向)
core.js:1633错误:Uncaught(承诺中):HttpErrorResponse:{“headers”:{“normalizedNames”:{},“lazyUpdate”:null,“headers”:{},“status”:0,“statusText”:“未知错误”,“url”:null,“ok”:false,“name”:“HttpErrorResponse”,“message”:“Http失败响应(未知url):(0未知错误”,“ERROR”:{“isTrusted”:true}

如果我删除了拦截器,会进行额外的调用,我会得到401AS,但仍然会得到A错误

如果我删除了拦截器和在服务器上进行身份验证的要求,那么请求就会出现(PS:请忽略这些无关的错误)


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

您在飞行前得到了重定向-因此请求被中止。正如您所看到的,您在非选项请求上得到了301。我可以得出结论,服务器没有正确配置为允许CORS-它应该将简单答案推送到选项请求上(或者故意拒绝它),但它并没有这样做-相反,服务器像GET请求一样重定向


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

您在飞行前获得了重定向-因此请求被中止。您还可以看到,您在非选项请求上获得了301。我可以断定服务器未配置为了正确地允许CORS—它应该将简单答案推送到选项请求(或者故意拒绝),但它并没有这样做—相反,服务器会像GET请求一样重定向


飞行前的请求不是你能控制的——它们是由浏览器发出的,服务器必须正确处理这些请求——否则浏览器将拒绝执行此类请求。

飞行前你得到了重定向——因此请求被中止。这到底意味着什么?这是服务器问题还是角度问题?(很抱歉,python和angular都是新手)这不是角度问题。你的拦截器看起来不错,文档中有一个非常类似的例子:。谢谢!会将你的答案标记为正确。@WagnerMatosUK这不是角度问题-可以是服务器或代理。你必须设置自己的后端代理以绕过CORS。你在飞行前得到重定向-因此请求被中止。这是什么意思确切地说是ean?这是服务器问题还是角度问题?(对不起,python和angular都是新手)这不是角度问题。您的拦截器看起来不错,文档中有一个非常类似的示例:。谢谢!将标记您的答案为正确。@WagnerMatosUK这不是角度问题-可以是服务器或代理。您必须设置自己的后端代理以绕过CORS。