CORS는 무엇인가요?
동일 출처 정책을 완화해 다른 출처의 자원 요청을 허용하는 브라우저 보안 메커니즘 CORS를 정리합니다.
CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) 는 브라우저가 다른 출처(origin) 의 리소스 요청을 허용할지 결정하는 보안 메커니즘입니다. 서버가 보내는 HTTP 헤더로 제어됩니다.
출처(Origin)란
프로토콜 + 호스트 + 포트가 모두 같아야 같은 출처입니다. 하나라도 다르면 교차 출처입니다.
https://a.com과https://a.com/page→ 같은 출처https://a.com과http://a.com→ 다름(프로토콜)https://a.com과https://api.a.com→ 다름(호스트)
동일 출처 정책과 CORS
브라우저는 보안을 위해 동일 출처 정책(Same-Origin Policy) 으로 다른 출처로의 스크립트 요청 결과 접근을 기본 차단합니다. CORS는 서버가 명시적으로 허용하면 이를 풀어 주는 표준입니다.
Access-Control-Allow-Origin: https://myapp.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type, Authorization프리플라이트(Preflight)
PUT/DELETE나 커스텀 헤더 등 “단순 요청”이 아닌 경우, 브라우저는 본 요청 전에 OPTIONS 메서드로 예비 요청을 보내 서버가 허용하는지 먼저 확인합니다. 허용 응답을 받아야 실제 요청을 보냅니다.
핵심 포인트
- CORS 에러는 브라우저가 막는 것입니다. 서버끼리의 통신이나
curl에는 적용되지 않습니다. - 해결은 서버가 적절한
Access-Control-Allow-*헤더를 응답하도록 설정하는 것입니다. - 프런트엔드에서 임시로는 프록시(같은 출처 경유)로 우회하기도 합니다.
CORS에 대한 설명으로 옳은 것은?
이 레슨을 다 읽으셨나요?
완료 표시는 이 브라우저에 저장됩니다.