带有“*”通配符的 Spring CORS 映射不起作用

问题描述 投票:0回答:3

我有一个 Spring Boot 应用程序。在应用程序类中,我像这样定义 CORS 映射:

@Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/lists");
            }
        };
    }

一切都可以使用这个,但是当我想添加一个包含例如的映射时这样的ID

registry.addMapping("/lists/**");  // it also doesn't work with '/lists/*'

,映射不再起作用,并且我在“/lists/142”等 GET 请求上收到“No Access-Control-Allow-Origin Header”错误

https://spring.io/blog/2015/06/08/cors-support-in-spring-framework所示,我尝试使用“/**”作为映射来允许所有请求端点 URL,但只有端点没有动态值(例如 ID)似乎工作正常。

spring spring-boot cors
3个回答
5
投票

尝试使用

@CrossOrigin

这可以作为通配符正常工作。


0
投票

尝试使用

@CrossOrigin(origins = "")

在您的控制器中。


0
投票

CORS通配符可以在

allowedOriginPatterns
中配置:

@Bean
fun filterChain(http: HttpSecurity): SecurityFilterChain =
    http
        .cors {
            it.configurationSource {
                CorsConfiguration().apply {
                    allowedOriginPatterns = listOf(
                        "https://a.b*.com",
                    )
                    allowedMethods = listOf("*")
                    allowedHeaders = listOf(ORIGIN, CONTENT_TYPE, ACCEPT, AUTHORIZATION)
                    allowCredentials = true
                }
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.