이론공부

CORS(Cross-Origin Resource Sharing)

DJ.Kang 2025. 2. 13. 07:43

□ CORS(Cross-Origin Resource Sharing)

  • 웹 브라우저에서 실행되는 보안 정책인 동일 출처 정책을 우회 할 수 있도록 도와주는 메커니즘

- 동일 출처 정책(Same-Origin Policy)

  • 브라우저는 보안상 서버의 출처(origin)가 다르면 요청을 차단.
    • 출처(origin) = 프로토콜 + 도메인 + 포트
    • 예를 들어, 아래 두 개의 출처는 다르다.
      • https://example.com (✅ 접근 가능)
      • http://example.com (❌ 차단됨 - 프로토콜 다름)
      • https://api.example.com (❌ 차단됨 - 서브도메인 다름)
  • 동일 출처 정책이 없다면, 악의적인 사이트에서 다른 사이트의 API를 마음대로 호출할 수 있어 보안 문제가 발생할 수 있다.

- CORS 해결방법

  • 서버 측에서 CORS 허용 응답 헤더 추가
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("https://example.com")  // 허용할 도메인
                .allowedMethods("GET", "POST", "PUT", "DELETE");
    }
}
  • HTTP 응답 헤더로 추가
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE