【发布时间】:2020-10-24 15:20:50
【问题描述】:
我有 Vuejs 前端和一个 Spring Boot Webflux 控制器。现在浏览器在调用 Spring Boot 时会抱怨 CORS。
Access to XMLHttpRequest at 'https://...' from origin 'https://...' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
为了启用 CORS,我尝试使用@CrossOrigin 注释,如下所述:https://www.baeldung.com/spring-webflux-cors
但这并没有帮助,并且即使在控制器中使用 @CrossOrigin 注释,Spring 也不会在响应中将 CORS 标头发送回。
我还尝试了 Bealdung 教程中描述的 WebTestClient,它确认标题不存在:
java.lang.AssertionError: Response header 'Access-Control-Allow-Origin' expected:<[*]> but was:<null>
> OPTIONS /cors-enabled-endpoint
> WebTestClient-Request-Id: [1]
> Origin: [http://any-origin.com]
> Access-Control-Request-Method: [GET]
No content
< 500 INTERNAL_SERVER_ERROR Internal Server Error
< Vary: [Origin, Access-Control-Request-Method, Access-Control-Request-Headers]
0 bytes of content (unknown content-type).
如果我用response.expectHeader().exists("Access-Control-Allow-Origin"); 测试
我明白了:
java.lang.AssertionError: Response header 'Access-Control-Allow-Origin' does not exist
知道为什么上面链接中描述的 CORS 配置不起作用吗?我还尝试在全局配置上启用 CORS 并使用 WebFilter 启用 CORS。但似乎没有任何效果。
【问题讨论】:
标签: java spring-boot cors spring-webflux same-origin-policy