[Spring Security] Invalid CORS request

SEPTEMBER·2025년 4월 30일

< 작업 환경 >

IDE: IntelliJ
Spring Boot: 3.4.1
Java: 21
EC2 Linux: Ubuntu

문제

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

해결

문제 원인: CORS 설정에 등록된 Origin이 달라서 발생

Spring에서는 CORS 정책(Cross-Origin Resource Sharing)을 통해 어떤 출처(origin)의 요청을 허용할지를 명시적으로 설정해야 한다. 그런데 https를 적용하기 위해 도메인 주소를 등록해놓고 CORS 관련 코드에는 해당 도메인을 반영하지 않아서 에러가 발생했던 것이다.

즉, "http://localhost:3000" 이 부분을 등록한 도메인 주소로 변경했어야 했는데 그러지 않았던 것이 원인이었다. 아래와 같이 실제 배포 도메인을 등록해줌으로써 문제를 해결할 수 있었다.

변경전 : allowedOrigins("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); // 자격 증명 허용
    }
}

변경후 : allowedOrigins("https://skaa.p-e.kr")

@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); // 자격 증명 허용
    }
}

0개의 댓글