diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java index 83d989f93..ab84a8750 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestHandlerMapping.java @@ -394,6 +394,10 @@ public class RepositoryRestHandlerMapping extends BasePathAwareHandlerMapping { config.addExposedHeader(resolveCorsAnnotationValue(header)); } + for (String originPattern : annotation.originPatterns()) { + config.addAllowedOriginPattern(originPattern); + } + String allowCredentials = resolveCorsAnnotationValue(annotation.allowCredentials()); if ("true".equalsIgnoreCase(allowCredentials)) { diff --git a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/RepositoryCorsConfigurationAccessorUnitTests.java b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/RepositoryCorsConfigurationAccessorUnitTests.java index 9d907bb84..7e5937996 100755 --- a/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/RepositoryCorsConfigurationAccessorUnitTests.java +++ b/spring-data-rest-webmvc/src/test/java/org/springframework/data/rest/webmvc/RepositoryCorsConfigurationAccessorUnitTests.java @@ -70,7 +70,7 @@ class RepositoryCorsConfigurationAccessorUnitTests { assertThat(configuration.getMaxAge()).isEqualTo(1800L); } - @Test // DATAREST-573 + @Test // DATAREST-573, #2077 void createConfigurationShouldConstructFullCorsConfiguration() { CorsConfiguration configuration = accessor.createConfiguration(FullyConfiguredCorsRepository.class); @@ -84,6 +84,7 @@ class RepositoryCorsConfigurationAccessorUnitTests { assertThat(configuration.getAllowedMethods()).doesNotContain("DELETE"); assertThat(configuration.getAllowCredentials()).isTrue(); assertThat(configuration.getMaxAge()).isEqualTo(1234L); + assertThat(configuration.getAllowedOriginPatterns()).containsExactly("somePattern"); } @Test // DATAREST-994 @@ -105,6 +106,7 @@ class RepositoryCorsConfigurationAccessorUnitTests { allowedHeaders = "Content-type", // maxAge = 1234, exposedHeaders = "Accept", // methods = RequestMethod.PATCH, // - allowCredentials = "true") + allowCredentials = "true", // + originPatterns = "somePattern") interface FullyConfiguredCorsRepository {} }