프론트엔드와 연결하는 작업을 시작하면서 드디어 만나게 되었다 cors.....

 

사실 본 프로젝트를 시작하기 전에 기본 기능만 닌자처럼 빠르게 구현해보고 부족한 점을 찾아서 본 프로젝트에서 보완하자는 의미의 '닌자 프로젝트' 를 진행하면서 cors 설정을 해두었기때문에 크게 걱정하지는 않았다

 

하지만 닌자 프로젝트는 spring security를 사용하지 않았지......

 

닌자 프로젝트에서 다음과 같이 cors을 적용했다

하지만 spring security는 이와 같이 해서는 안되고 filter에 적용을 시켜야 한다는 것을 모르고 있었다

몰랐기에 이것 저것 정말 많이 시도해보았고 결국은 해냈다

 

 

스프링부트 2.4.0부터 AllowCredentials가 true일때는 AllowdOrigin에 *를 추가할 수 없고, 대신 AllowOriginPattern을 사용해야 한다고 한다

AllowCredentials가 true일 시 cors 요청시 쿠키 값을 포함한다고 하는데, false로 설정해주며 해결하였다

 

 

 

해결 과정

1. 기존에 작성되었던 코드(filter에 적용하는 방법)가 내가 작성한게 아니기에 잘 모르고 있었음 

2. 닌자 프로젝트에서 했던 방식으로 설정해봄 -> 실패

3. 여러가지 값들을 변경하며 설정해봄 -> 실패

4. filter에 적용시켜야 하는 것을 깨닫고 기존과 같은 방식으로 시도해봄 -> 실패

5. AllowCredentials가 true일때 AllowedOrigin에 *를 추가할 수 없다는 것을 깨달음

6. AllowCredential을 false로 변경 -> 성공

 

 


지금은 이렇게 다 허용을 했지만 현업에서는 어떻게 설정했는지 궁금하다

프론트엔드 서버만 허용 가능하게 설정해둘까?

 

cors도 공부해야겠다.... 공부할게 점점 더 늘어간다

복사했습니다!