CORS는 웹 브라우저에서 실행되는 보안 메커니즘이다.
기본적으로 브라우저에서는 동일한 출처의 서버에서 보낸 응답의 접근을 허락하는 동일 출저 정책(Same-Origin Policy)이 적용되어 있다. 즉, 같은 출처가 아닌 서버에서 보낸 응답에는 접근할 수 없도록 사용자의 브라우저에서 차단하는 것이다. 하지만 다른 출처의 서버에 요청을 하고 응답을 받아야 하는 경우가 있다. 이럴 때 CORS를 사용하면 서버가 허용된 출처에 대해 리소스를 공유할 수 있게 해줍니다.
웹의 진화: 현대 웹 애플리케이션은 여러 도메인의 리소스를 활용하며, 이로 인해 다른 출처의 리소스에 접근할 필요성이 생겼다.
보안 강화: CORS는 무분별한 cross-origin 요청을 막아 보안을 강화하며, 서버가 명시적으로 허용한 출처의 요청만 받아들이도록 한다.
1. 사전 요청
브라우저는 실제 요청 전에 OPTIONS 메서드를 사용하여 서버에 사전 요청을 보낸다. 이 사전 요청에는 다음과 같은 사항이 포함된다.
사전 요청 헤더 포함 사항
2. 서버 응답
서버는 사전 요청을 받고 CORS 정책을 확인한 후, 적절한 헤더를 포함하여 응답한다.
주요 CORS 헤더
3. 브라우저의 검증
브라우저는 서버의 응답을 검토하여 실제 요청의 허용 여부를 결정한다.
4. 실제 요청
Preflight 요청에 대한 응답이 긍정적이라면, 브라우저는 실제 요청을 서버로 보내고 서버는 요청에 대해 적절한 CORS 헤더를 추가하여 응답을 반환한다.