cors 때문에 고생했어서 기록을 남기기 위해 적습니다..
현재 상황
- React 프런트
- Spring Boot 백엔드
- 처음에는 서버 사이드 랜더링으로 시작했기 때문에 로그인 방식이 세션이었다가 나중에 Spring Security 로 변경했다.
Spring Security 사용 전
WebMvcConfigurer - addCorsMapping 으로 바로 해결이 됐었다.
allowedOrigins 에 프런트 주소 넣으면 된다.
Spring Security 사용 후
아니 갑자기 프런트에서 또 cors 오류가 난다고 한다..
이거 때문에 몇시간을 고생했다.
우선 해결 방법부터 말하자면
WebSecurityConfig - SecurityFilterChain 을 만들 때 cors() 를 추가해줬다.
Spring Security 내장 CORS 설정을 활용하는 것이라고 한다.
위 방법 전에 여기저기 검색해보며 시도했던 것이 있는데 cors filter 를 만든 것이었다.
CorsFilter
그런데 이 필터를 적용했을 때는 CORS 오류가 해결이 안됐었다.
이유를 찾아보니
CorsFilter 랑 WebSecurityConfig 의 SecurityFilterChain httpSecurity.cors() 는 같이 사용하면 충돌이 날 수 있어서 하나만 써야 한다고 한다.
WebSecurityConfig 를 사용할 것이기 때문에 CorsFilter 는 사용하지 않을 것이다.
만약 WebSecurityConfig 를 사용하지 않고 CorsFilter 만 사용했을 때 해결이 됐을 지는 모르겠다. 테스트를 안해봐서.. 아마 되겠지?
마지막 반전...
WebSecurityConfig 에서 .cors() 추가만 한 것으로는 여전히 오류가 났다.
왜냐하면 WebMvcConfigurer - addCorsMapping 가 필요 없어진 줄 알고 지웠기 때문이었다.
그런데 두가지 모두 있어야 오류가 안났다.
addCorsMappings 메서드를 사용하면 Spring MVC에서 특정 컨트롤러 레벨 또는 패스 패턴에 대한 CORS 정책을 설정할 수 있다.
이것은 Spring Security 와 별개이기 때문에 함께 사용해서 각각 CORS 설정을 할 수 있다.
정말 지긋지긋했던 CORS 오류...
아마 중간에 Spring Security 를 도입하면서 더 헷갈렸던 것 같다. 마침 aws 에 배포한 시기와 맞물려서 더 헷갈렸다..
그래도 해결됐으니 다행이다!!

'JAVA SPRING' 카테고리의 다른 글
API 부하테스트 툴 ngrinder (0) | 2024.07.08 |
---|---|
Spring Batch 5 ItemProcessor 에서 return list (0) | 2024.06.02 |
커넥션, 트랜잭션 간단 정리 (0) | 2024.06.02 |
Java 예외 처리 (0) | 2024.05.27 |