IDE: IntelliJ
Spring Boot: 3.4.1
Java: 21
EC2 Linux: Ubuntu
Spring Boot 프로젝트를 EC2에 배포한 뒤 프론트엔드에서 HTTPS로 요청을 보냈더니 Invalid CORS request 라는 에러가 발생했다. 동일한 API를 http://localhost:3000 에서 호출할 때는 문제가 없었는데 배포 후 실제 도메인에서는 요청이 차단되는 현상이 발생한 것이다.

Spring에서는 CORS 정책(Cross-Origin Resource Sharing)을 통해 어떤 출처(origin)의 요청을 허용할지를 명시적으로 설정해야 한다. 그런데 https를 적용하기 위해 도메인 주소를 등록해놓고 CORS 관련 코드에는 해당 도메인을 반영하지 않아서 에러가 발생했던 것이다.
즉, "http://localhost:3000" 이 부분을 등록한 도메인 주소로 변경했어야 했는데 그러지 않았던 것이 원인이었다. 아래와 같이 실제 배포 도메인을 등록해줌으로써 문제를 해결할 수 있었다.
@Configuration
public class CorsMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry corsRegistry) {
corsRegistry.addMapping("/**")
.allowedOrigins("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE") // 요청 방식도 확인
.allowedHeaders("*") // 모든 헤더 허용
.allowCredentials(true); // 자격 증명 허용
}
}
@Configuration
public class CorsMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry corsRegistry) {
corsRegistry.addMapping("/**")
.allowedOrigins("https://skaa.p-e.kr")
.allowedMethods("GET", "POST", "PUT", "DELETE") // 요청 방식도 확인
.allowedHeaders("*") // 모든 헤더 허용
.allowCredentials(true); // 자격 증명 허용
}
}