预检响应具有无效的 HTTP 状态代码 403 + angular 2 + Java Spring boot

Posted

技术标签:

【中文标题】预检响应具有无效的 HTTP 状态代码 403 + angular 2 + Java Spring boot【英文标题】:Response for preflight has invalid HTTP status code 403 + angular 2 + Java Spring boot 【发布时间】:2017-08-11 18:58:29 【问题描述】:

我正在使用 Angular 2 中的以下标头对服务器进行 API GET 调用。我的 Angular 2 代码如下:

let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Authorization', `$this.publisherAccessTokenVar`);

let options = new RequestOptions( headers: headers );

return this.http.get( 'https://blahblah', options)
            .retryWhen((error) => error.delay(this.appConfig.serviceCallRetryDelay))
            .timeout(this.appConfig.serviceCallRetryTimeOut)
            .map((response: Response) => response.json());

我的spring boot CORS代码如下:

HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", ((HttpServletRequest) req).getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST,PUT, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Access-Control-Request-Method,Access-Control-Request-Headers,Content-Type, Accept, X-Requested-With, remember-me, Authorization, X-XSRF-TOKEN");
        chain.doFilter(req, res);

我收到以下错误:

OPTIONS http://blah-blah.com/abcd/logout 403 (Forbidden)
XMLHttpRequest cannot load http://blah-blah.com/abcd/logout. Response for preflight has invalid HTTP status code 403

如何解决这个问题??

【问题讨论】:

见here 【参考方案1】:

你必须在你的控制器声明之前添加@CrossOrigin。

【讨论】:

以上是关于预检响应具有无效的 HTTP 状态代码 403 + angular 2 + Java Spring boot的主要内容,如果未能解决你的问题,请参考以下文章

CORS 问题:预检响应具有无效的 HTTP 状态代码 403

预检响应在角度发布请求上具有无效的 HTTP 状态代码 403

预检响应具有无效的 HTTP 状态代码 403 + angular 2 + Java Spring boot

预检响应具有无效的 HTTP 状态代码 404”

预检响应具有无效的 HTTP 状态代码:401 角度

预检响应在角度 4 中具有无效的 HTTP 状态代码 500