웹

CORS

다른 이름: Cross-Origin Resource Sharing

정의

Cross-Origin Resource Sharing. 브라우저의 Same-Origin Policy를 서버가 선택적으로 완화하는 메커니즘. 서버가 Access-Control-Allow-Origin 같은 헤더로 허용할 출처를 알려 줌. 조건에 따라 Preflight(OPTIONS) 요청으로 사전 확인. 다른 출처의 API를 브라우저에서 호출할 때 필요

상세 설명

기술 스펙

  • Same-Origin Policy: 프로토콜://도메인:포트 동일해야 접근
  • Simple Request: GET, POST, HEAD + 허용 헤더만
  • Preflight Request: OPTIONS 메서드로 사전 확인
  • Access-Control-Allow-Origin: * 또는 특정 도메인
  • Access-Control-Allow-Methods: GET, POST, PUT
  • Access-Control-Allow-Headers: Content-Type, Authorization
  • Access-Control-Allow-Credentials: 쿠키 포함 여부
  • Access-Control-Max-Age: Preflight 캐시 시간

실무 활용

  • SPA: localhost:3000 → api.example.com 호출
  • CDN: CDN 도메인에서 리소스 로드
  • 마이크로서비스: 다른 서버 API 호출
  • 개발: 프론트엔드 개발 서버 → 백엔드 API

장점

  • 보안: Same-Origin Policy로 XSS 방어
  • 세밀한 제어: 도메인, 메서드, 헤더별 허용
  • 표준화: 모든 모던 브라우저 지원

단점 및 제약

  • Preflight 오버헤드: OPTIONS 요청 추가 지연
  • 복잡한 설정: 서버 헤더 설정 실수 빈번
  • 개발 불편: 로컬 개발 시 CORS 에러
  • 보안 오해: Access-Control-Allow-Origin: * 위험

호환성

모든 모던 브라우저 (IE 10+), 서버 프레임워크

표준 정보

표준화 기구: W3C CORS Specification

출시 연도: 2014년