Сопоставление Spring CORS с подстановочным знаком '*' не работает

У меня есть приложение Spring Boot. В классе Application я определяю свои сопоставления CORS следующим образом:

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

С этим все работает, но когда я хочу добавить сопоставление, содержащее, например, такой идентификатор

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

, сопоставление больше не работает, и я получаю сообщение об ошибке «Нет заголовка Access-Control-Allow-Origin» в запросе GET, например «/ lists / 142»

Как показано в https://spring.io/blog/2015/06/08/cors-support-in-spring-framework, я попытался использовать «/ **» в качестве сопоставления, чтобы разрешить запросы по всем URL-адресам конечных точек, но только динамические значения без конечных точек (например, идентификаторы) работают нормально.

1
0
5 599
2

Ответы 2

Попробуй использовать

@CrossOrigin(origins = "")

в вашем контроллере.

спасибо за это предложение! Кажется, это работает, но было бы неплохо, если бы я мог использовать WebMvcConfigurer и метод addCorsMappings (), потому что мне нужно переопределить этот метод с определенной логикой, а затем применить его в реестре cors.

McRaven 24.05.2018 11:44

я попытался создать массив в application.properties, например, allowedOrigins = локальный: 1234, http: // локальный: 2345 ', и сослаться на него в @CrossOrigin (origins = "$ {allowedOrigins}", но он не работает. Он работает, только если я укажу только ОДИН элемента в allowedOrigins в файле application.properties. Есть ли способ правильно загрузить массив свойств в @CrossOrigin (origins = {..})?

McRaven 24.05.2018 12:19

Попробуй использовать

@CrossOrigin

Это правильно работает как подстановочный знак.

Другие вопросы по теме