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 整合Spring Data JPA

Spring Boot 在使用 solrj 而不是 spring-boot-starter-data-solr 时会爆炸

spring boot系列spring boot 配置spring data jpa (查询方法)

Spring boot集成spring-boot-starter-data-jpa环境搭建

spring boot -spring data-redis