프로젝트를 진행하던 중 프론트에서 다음과 같은 cors 에러가 난다고 요청이 왔다.
"Access to XMLHttpRequest at 'http://testsite:8080/login' from origin 'http://testsite:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource."
처음에는 Security corsConfigurationSource() 의 addAllowedOrigin 의 코드 문제인 줄 알았다.
configuration.addAllowedOrigin("http://testsite:8080/**");
이렇게 하면 swagger와 서버에서 둘 다 사용할 수 없기 때문에
configuration.addAllowedOrigin("*");
이렇게 바꾸고 배포를 하였다. 나는 Swagger에서 잘 나오면 서버에서도 잘 나오는 줄로만 알았다...
그런데 여전히 Swagger에서만 잘 나오고, 서버에서는 cors에러가 난다는 얘기를 들었다...
결론은,
스프링부트 2.4.0부터는 allowCredentials(true)를 사용하면 allowedOrigins에 특수 값인 "" 추가할 수 없다고 한다.
대신 AllowedOriginPattern를 "" 로 사용해야 한다.
생각보다 간단한 문제였지만 나에게는 공부를 더 깊게 해야한다는 생각을 하게 해주었다.