HTTP拦截器使用离子/角度导致CORS问题

时间:2020-09-23 13:25:26

标签: javascript angular ionic-framework

在这里,我也在网络和移动设备上使用ionic,并且在集成时使用了https url时出现了cors问题。后来我在删除 http拦截器 cors问题后进行了检查,我可以在下面解决这个问题吗?

问题:使用拦截器时,我遇到了CORS问题,如果我删除了拦截器,它会正常工作。

export class HttpConfigInterceptor implements HttpInterceptor {
    token:any;

    constructor(public storage: Storage ) { 
        this.storage.get('Token').then(data => {
            this.token = data;
        });
    }


    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        //Authentication by setting header with token value
        if (this.token) {
            request = request.clone({
                setHeaders: {
                    Authorization: this.token
                }
            });
        }

        if (!request.headers.has('Content-Type')) {
            request = request.clone({
                setHeaders: {
                    'content-type': 'application/json'
                }
            });
        }

        request = request.clone({
            headers: request.headers.set('Accept', 'application/json')
        });

        return next.handle(request).pipe(
            map((event: HttpEvent<any>) => {
                if (event instanceof HttpResponse) {
                   
                }
                return event;
            }),
            catchError((error: HttpErrorResponse) => {
                console.error(error);
                return throwError(error);
            }));
    }


}

我的要求出了问题,给了cors 200和text / html

1 个答案:

答案 0 :(得分:2)

在我看来,这就像您的问题是,添加Authorization标头会使GET请求“不安全”,因此您的客户在{之前发送了OPTIONS预检请求{1}},并且您的API网关未配置为处理GET方法请求。您可能需要在网关中添加通用的OPTIONS方法处理程序,并确保CORS允许使用OPTIONS方法。

无论如何,这个问题几乎肯定在服务器端,因此需要您的服务器配置来提供有关如何解决此问题的详细说明。