Spring Boot + Spring Data Rest Repositories 中使用 @CrossOrigin 注释的 CORS 问题
Posted
技术标签:
【中文标题】Spring Boot + Spring Data Rest Repositories 中使用 @CrossOrigin 注释的 CORS 问题【英文标题】:CORS issue in Spring Boot + Spring Data Rest Repositories annotated with @CrossOrigin 【发布时间】:2020-08-27 05:24:50 【问题描述】:由于 CORS,我的 spring boot + spring data rest 应用程序出现问题。
此应用程序在JpaRepository
接口上公开使用@RepositoryRestResource
自动创建的端点。
这是一个例子:
@CrossOrigin
@RepositoryRestResource
public interface UserRepository extends JpaRepository<User, Long>
....
不幸的是,我没有在响应中获得预期的 Access-Control-Allow-Origin 标头。 相反,我使用 Postman 获取此标头:
我还尝试在RepositoryRestConfigurer
中配置 CORS:
@Configuration
public class SpringDataRestCustomization implements RepositoryRestConfigurer
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config)
config.getCorsRegistry()
.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "PUT", "DELETE")
.exposedHeaders("Access-Control-Allow-Origin")
.allowCredentials(false).maxAge(3600);
有人遇到同样的问题吗?
【问题讨论】:
【参考方案1】:问题已解决!
我意识到您需要在请求中包含标头“Origin”。 如果不是,则返回的响应将不包含标头“Access-Control-Allow-Origin”
愚蠢的错误,但也许它可以避免为别人浪费时间。 :)
【讨论】:
以上是关于Spring Boot + Spring Data Rest Repositories 中使用 @CrossOrigin 注释的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot + spring-data-redis
Spring Boot 在使用 solrj 而不是 spring-boot-starter-data-solr 时会爆炸
spring boot系列spring boot 配置spring data jpa (查询方法)