단북
프론트엔드 기술 면접·인프라·보안·네트워크

CORS는 무엇인가요?

동일 출처 정책을 완화해 다른 출처의 자원 요청을 허용하는 브라우저 보안 메커니즘 CORS를 정리합니다.

CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) 는 브라우저가 다른 출처(origin) 의 리소스 요청을 허용할지 결정하는 보안 메커니즘입니다. 서버가 보내는 HTTP 헤더로 제어됩니다.

출처(Origin)란

프로토콜 + 호스트 + 포트가 모두 같아야 같은 출처입니다. 하나라도 다르면 교차 출처입니다.

  • https://a.comhttps://a.com/page → 같은 출처
  • https://a.comhttp://a.com → 다름(프로토콜)
  • https://a.comhttps://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에 대한 설명으로 옳은 것은?

이 레슨을 다 읽으셨나요?

완료 표시는 이 브라우저에 저장됩니다.