preflight(option method) 요청을 처리하다가 궁금한 점이 생겼음.
@Configuration
class CorsConfiguration : WebMvcConfigurer {
@Bean
fun corsConfigurer(): WebMvcConfigurer {
class CorsConfiguration : WebMvcConfigurer {
@Bean
fun corsConfigurer(): WebMvcConfigurer {
내가 CORS 오류를 해결하려고 하려고, 이런 설정파일을 하나 만들어놨거든
1. 위 코드의 corsConfigurer 함수가 allowedOrigins, method, header 이런걸 반환해주는데, 이 함수가 실행되는 시점이 위 과정에서 어디에 속하는 것임?
2. preflight요청인 option method 요청은 어느 과정까지 도달하는 것임? controller에서 option method에 대한 매핑을 내가 안만들어 뒀으니깐 컨트롤러까지는 안가는 거 아님? 어느 시점에서 response를 보내게 되는건지 궁금함
1. 스프링 시작 시점에 빈으로 등록되고 실행되서 cors 정책 설정 2. preflight 요청은 실제 요청과 동일한 url로 전송되고 options 요청을 통해 필터 내에서 cors정책에 맞는지 확인 후 응답함 cors관련 헤더를 필터에서 검사하고 컨트롤러까지 와야지만 response가 커밋되는거 아님
CorsFilter에서 검사되고 origin, method등이 허용된것인지 확인함
오 답변 감사합니당 1번에서 저는 일단 이해가 안갔던게, 그 정책 설정이라는게 결국 response의 header을 셋팅해주는 작업 아닌가요? 저는 header가 어느 시점에 셋팅되는지가 궁금했어요. 왜냐하면 제가 필터에서 response를 강제로 보냈을 때는(아무런 셋팅 하지 않고) 프론트엔드에 빈 response가 날라갔거든요. 그래서 저런 헤더 셋팅이 응답을 하는 과정 중 특정한 어느 시점에 실행되는게 아닐까? 라는 생각을 했어요 그리고 2번은 결국 스프링 필터에는 cors filter가 기본적으로 있는데 이 필터에서 직접 응답을 보내고, 요청은 dispatcher servlet에 도달하지도 못한다는 거죠??
1. 정책 설정이라는건 스프링 시작 시점에 config를 이용해서 필터를 초기화 할 때 사용 가능한 origin, method, exposed header등 상태값을 초기화 함으로써 요청이 들어올때 마다 요청 헤더를 cors필터에서 를 검사한다는 의미임 2. preflight 필터에서 1. 내용 기반으로 정상 요청으로 판단한 경우, response에 cors 관련 헤더를 세팅해주고 브라우저에서 이를 기반으로 cors 정책을 준수하는지 판단해서 본요청을 보낼지말지를 결정 options method 요청은 일반적으로 필터에서 처리되고 디스패처서블릿까지 도달 못함
오 완전 이해헀어요 감사합니다 선생님