CORS는 HTTP 헤더 기반 메커니즘으로, 브라우저가 리소스 로딩을 허용해야 하는 자체 출처 이외의 모든 외부 출처를 서버가 표시할 수 있도록 하는 것이다. 또한 서버가 실제 요청을 허용하는지 확인하기 위해 브라우저가 원본 리소스를 호스팅하는 서버에 실행 전에 요청을 하는 메커니즘에 의존한다.

보안상의 이유로 브라우저는 스크립트에서 시작된 cross-site HTTP 요청을 제한한다.

CORS 표준은 서버가 웹 브라우저에서 해당 정보를 읽을 수 있는 출처를 설명할 수 있는 새로운 HTTP헤더를 추가하여 작동한다. 서버 데이터에 부작용을 일으킬 수 있는 HTTP 요청 매서드의 경우 사양에서는 브라우저가 요청을 preflight 하여 서버에서 지원되는 매서드를 HTTP OPTIONS 요청 메서드를 사용하여 서버에서 승인시 실제 요청을 보낸다.

[CORS의 3가지 시나리오]

  1. Simple Request

  2. Preflight Request

    : simple request와 달리 preflight의 경우 브라우저는 실제 요청이 안전한지 먼저 OPTIONS 매서드를 사용하여 다른 출처의 리소스에 HTTP 요청을 보낸다.

    1. Requests with Credential

      ⇒ 이 부분은 쿠키 챕터에서 자세하게 공부하기!!!