CORS(Cross-Origin Resource Sharing)는 웹 브라우저에서 실행되는 웹 애플리케이션에서 다른 도메인(Origin)으로부터 리소스를 요청할 때 발생하는 보안 정책을 나타내는 메커니즘입니다.
이는 웹 브라우저가 동일 출처 정책(Same-Origin Policy)에 의해 제한되는 상황에서 다른 도메인으로부터 리소스에 접근하는 것을 허용하기 위한 방법으로 사용됩니다.
동일 출처 정책은 웹 브라우저에서 실행 중인 스크립트가 다른 출처(도메인, 프로토콜 또는 포트)에서 로드된 리소스에 접근하는 것을 제한하는 보안 기능입니다.
이로 인해 웹 애플리케이션은 보안 상의 이유로 다른 출처의 리소스에 직접 접근하는 것이 제한됩니다.
CORS는 이러한 동일 출처 정책을 우회하는 방법 중 하나로, 웹 서버가 브라우저에게 리소스 접근을 허용할 도메인들을 명시적으로 알려주는 것입니다.
따라서, 클라이언트 측(브라우저)에서 다른 도메인으로 리소스를 요청할 때, 서버 측은 응답 헤더에 CORS 관련 정보를 포함하여 브라우저에게 해당 요청이 허용되었는지를 알려줍니다.
CORS 요청은 다음과 같은 두 가지 유형으로 나눌 수 있습니다.
브라우저가 요청에 대해 사전 요청(preflight)을 보내지 않고, 일반적인 HTTP 메서드(GET, POST, HEAD)를 사용하는 요청입니다.
단순 요청이 아니거나 특정 조건을 만족하지 않는 경우, 브라우저는 사전 요청을 보내고 OPTIONS 메서드를 사용하여 서버가 요청을 수락할 수 있는지를 확인합니다.
이때 서버는 요청을 허용하는지에 대한 응답으로 적절한 CORS 헤더를 포함하여 응답합니다.
CORS를 사용하려면 서버 측에서 클라이언트가 허용되는 도메인과 요청을 처리할 수 있는 방법을 구성해야 합니다.
대표적으로 다음과 같은 응답 헤더를 사용합니다.
허용된 도메인의 목록을 설정합니다.
허용된 HTTP 메서드의 목록을 설정합니다.
허용된 HTTP 헤더의 목록을 설정합니다.
요청 시 쿠키를 사용할 수 있는지를 나타냅니다.
클라이언트가 접근할 수 있는 추가적인 응답 헤더를 설정합니다.
사전 요청 결과를 캐시할 시간을 설정합니다.
CORS를 사용하여 보안을 강화하고, 다른 도메인 간의 데이터 교환을 제어함으로써 웹 애플리케이션의 안정성을 향상시킬 수 있습니다.
핵심 키워드