웹
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년