У меня есть приложение 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-адресам конечных точек, но только динамические значения без конечных точек (например, идентификаторы) работают нормально.
Попробуй использовать
@CrossOrigin(origins = "")
в вашем контроллере.
я попытался создать массив в application.properties, например, allowedOrigins = локальный: 1234, http: // локальный: 2345 ', и сослаться на него в @CrossOrigin (origins = "$ {allowedOrigins}", но он не работает. Он работает, только если я укажу только ОДИН элемента в allowedOrigins в файле application.properties. Есть ли способ правильно загрузить массив свойств в @CrossOrigin (origins = {..})?
Попробуй использовать
@CrossOrigin
Это правильно работает как подстановочный знак.
спасибо за это предложение! Кажется, это работает, но было бы неплохо, если бы я мог использовать WebMvcConfigurer и метод addCorsMappings (), потому что мне нужно переопределить этот метод с определенной логикой, а затем применить его в реестре cors.