여러가지/이것저것

CORS란 무엇인가요?

hyeseong-dev 2024. 3. 18. 11:15

CORS(Cross-Origin Resource Sharing)웹 페이지가 다른 도메인의 리소스에 접근할 수 있게 해주는 보안 메커니즘입니다. 기본적으로, 웹 브라우저는 같은 출처 정책(Same-Origin Policy)을 따릅니다. 이 정책은 웹 페이지가 다른 도메인(출처)의 리소스에 접근하는 것을 제한하는 보안 조치로, XSS(Cross-Site Scripting) 공격과 같은 웹 보안 취약점을 예방하는 데 도움이 됩니다. 그러나 이로 인해 합법적인 크로스-도메인 요청도 차단될 수 있습니다.

CORS 작동 방식

CORS는 웹 애플리케이션에서 다른 출처의 리소스를 안전하게 요청할 수 있도록 허용합니다. 이는 서버가 추가 HTTP 헤더를 사용하여 브라우저에게 해당 리소스에 대한 접근을 허용하는 출처와 조건을 알려줌으로써 이루어집니다.

예를 들어, [https://domain-a.com](https://domain-a.com)의 웹 페이지가 AJAX를 사용하여 [https://api.domain-b.com](https://api.domain-b.com)에 데이터를 요청하는 경우, `domain-b.com`의 서버는 다음과 같은 HTTP 헤더를 응답에 포함시켜 `domain-a.com`의 요청을 허용할 수 있습니다.

Access-Control-Allow-Origin: [https://domain-a.com](https://domain-a.com)  

Preflight Request

CORS 정책에서는 특정 유형의 요청(특히, 사용자 데이터를 변경할 수 있는 요청 또는 특별한 헤더를 사용하는 요청)을 보내기 전에 "사전 요청"(Preflight Request)을 보낼 수 있습니다. 이는 서버에게 실제 요청을 보내기 전에 해당 요청이 안전한지 확인하는 과정입니다.

Preflight 요청은 OPTIONS 메서드를 사용하며, 실제 요청에서 사용될 HTTP 메서드와 헤더를 Access-Control-Request-MethodAccess-Control-Request-Headers 헤더에 포함시켜 서버로 보냅니다. 이에 대한 응답으로 서버는 Access-Control-Allow-MethodsAccess-Control-Allow-Headers 헤더를 통해 해당 요청의 허용 여부와 조건을 알려줍니다.

CORS의 중요성

CORS는 현대의 다양하고 복잡한 웹 애플리케이션에서 필수적입니다. API 서버와 프론트엔드가 다른 도메인에 배포되는 경우가 많기 때문에, 개발자는 CORS 정책을 이해하고 적절히 구성할 필요가 있습니다. 올바른 CORS 설정은 애플리케이션의 접근성과 보안성을 모두 증가시킬 수 있습니다.