Я пытаюсь настроить CORS по всему миру через WebMvcConfigurerAdapter
, показанный ниже. Чтобы проверить, я ударил свою конечную точку API через приложение небольшого узла, которое я создал для эмуляции внешней службы. Когда я попробовать этот подход ответ не содержит правильные заголовки и не сКонфигурация Spring Global CORS не работает, но конфигурация уровня контроллера
XMLHttpRequest cannot load http://localhost:8080/api/query/1121. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:333' is therefore not allowed access.
Global Config
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/query/**")
.allowedOrigins("*")
.allowedHeaders("*")
.allowCredentials(true);
}
}
Однако когда я использовать @CrossOrigin
аннотацию как и она работает просто отлично реагирует с соответствующими заголовками ,
@CrossOrigin(origins = "*", allowCredentials = "true", allowedHeaders = "*")
@RestController
@RequestMapping(value = "/api/query", produces = MediaType.APPLICATION_JSON_VALUE)
public class QueryController {
......
}
Производит
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:333
Что мне не хватает, чтобы сделать глобальную конфигурационную работу (следовал инструкциям здесь https://spring.io/blog/2015/06/08/cors-support-in-spring-framework). Я чувствую, что мне не хватает чего-то простого, так как аннотация контроллера работает нормально.
Возможно, '.allowedOrigins (" * ").allowedHeaders ("*") 'избыточны в глобальной конфигурации. –