본문 바로가기
개발

CORS 정책 정리: 웹 API 개발자가 꼭 알아야 할 개념 (Spring 기준)

by 새싹 아빠 2025. 7. 14.

🔐 Firebase Hosting + Spring Boot API 연동 시 CORS란?

Firebase Hosting으로 프론트엔드를 배포하면 URL이 보통 다음과 같이 생성됩니다:

https://your-project-id.web.app

그런데 Spring Boot API 서버는 http://your-server.com처럼 다른 도메인을 사용하죠.
브라우저는 보안상 출처(origin)가 다른 요청을 자동으로 막기 때문에, 서버에서 반드시 CORS 정책을 허용해줘야 합니다.


⚙️ Spring Boot에서 CORS 허용하는 방법

SecurityConfig.kt에서 아래와 같이 설정을 추가합니다:


@Bean
fun corsConfigurationSource(): CorsConfigurationSource {
    val config = CorsConfiguration()
    config.allowedOrigins = listOf(
        "http://localhost:5173",                // 개발 환경
        "https://your-project-id.web.app"       // Firebase Hosting
    )
    config.allowedMethods = listOf("GET", "POST", "PUT", "DELETE", "OPTIONS")
    config.allowedHeaders = listOf("*")
    config.allowCredentials = true

    val source = UrlBasedCorsConfigurationSource()
    source.registerCorsConfiguration("/**", config)
    return source
}

💡 팁

  • 로컬 개발용 주소(localhost)배포 주소(Firebase) 모두 추가해야 합니다.
  • allowedOrigins에는 http/https 포함한 정확한 주소를 써야 합니다.
  • 쿠키나 인증 정보를 주고받을 땐 allowCredentials = true 필수!

✅ 정리

  • 클라이언트와 서버의 도메인이 다르면 CORS 정책으로 차단될 수 있다.
  • Spring Boot에서 allowedOrigins를 설정해 허용 출처를 등록하면 해결된다.
  • Firebase Hosting URL을 잊지 말고 꼭 등록할 것!