작성
·
312
0
안녕하세요 강의 잘듣고 있습니다!
다름이 아니라 강의 내용을 바탕으로 토이프로젝트를 듣던와중에 cors 관련 이슈로
api에 @corsorigin을 바로 사용하는 것이 아닌
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowCredentials(true);
}
}
이런 형식으로 사용하고 있는데 저 webconfig가 어떻게 실행이되는지 의문이 듭니다,
@configuration설정 파일임을 명시하고 webconfig 클래스가 스프링빈에 등록되는 것도 알겠는데 addCorsMappings를 호출하지 않는 이상 전역으로 설정하는 것이 불가능 하다고 생각했는데 따로 호출을 안해도 되더라고요.
또 전역으로 설정한이후에 patch에서는 계속 cors 문제가 나오는데 patch는 webconfig 커스터마이징으로 cors를 해결할수 없는지 궁금해서 여쭈어봅니다! 감사합니다
답변 1
1
안녕하세요. hsg0208님, 공식 서포터즈 David입니다.
.
1. 내부적으로 해당 메서드가 호출되어 작성하신 설정이 적용됩니다.
2. https://spring.io/guides/gs/rest-service-cors/#global-cors-configuration
링크를 보시면 기본 설정이 GET, HEAD, POST Method라고 나옵니다.
PATCH를 설정으로 추가해주셔야 합니다.
.
감사합니다.
WebMvc 설정 관련된 것들을 가지고 있는 목록을 돌면서 addCorsMappings()을 호출합니다. 해당 목록에는 WebConfig이 들어있고요.
자세한 내부동작이 궁금하시면 아래와 같이 break point를 걸고 호출을 하나씩 타고 올라가보시면 됩니다.
그렇다면 내부적으로 호출이 된다는게 스프링 컨테이너에서
getBean(WebMVCConfiguror.class) 같이 연결 설정 객체를 가져와서 매서드를 호출하는 느낌 인건가요??