본문 바로가기
JAVA SPRING

Spring Boot CORS 설정

by 임만율 2023. 9. 3.

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