CORS(Cross-Origin Resource Sharing)

귤녹차·2025년 2월 6일

1️⃣ CORS(Cross-Origin Resource Sharing)

CORS는 웹 브라우저에서 실행되는 보안 메커니즘이다.

기본적으로 브라우저에서는 동일한 출처의 서버에서 보낸 응답의 접근을 허락하는 동일 출저 정책(Same-Origin Policy)이 적용되어 있다. 즉, 같은 출처가 아닌 서버에서 보낸 응답에는 접근할 수 없도록 사용자의 브라우저에서 차단하는 것이다. 하지만 다른 출처의 서버에 요청을 하고 응답을 받아야 하는 경우가 있다. 이럴 때 CORS를 사용하면 서버가 허용된 출처에 대해 리소스를 공유할 수 있게 해줍니다.

2️⃣ CORS의 필요성

웹의 진화: 현대 웹 애플리케이션은 여러 도메인의 리소스를 활용하며, 이로 인해 다른 출처의 리소스에 접근할 필요성이 생겼다.

보안 강화: CORS는 무분별한 cross-origin 요청을 막아 보안을 강화하며, 서버가 명시적으로 허용한 출처의 요청만 받아들이도록 한다.

3️⃣ CORS의 작동 방식

1. 사전 요청

브라우저는 실제 요청 전에 OPTIONS 메서드를 사용하여 서버에 사전 요청을 보낸다. 이 사전 요청에는 다음과 같은 사항이 포함된다.

사전 요청 헤더 포함 사항

  • Origin: 요청 출처
  • Access-Control-Request-Method: 실제 요청에서 사용할 HTTP 메서드
  • Access-Control-Request-Headers: 실제 요청에서 사용할 사용자 정의 헤더

2. 서버 응답

서버는 사전 요청을 받고 CORS 정책을 확인한 후, 적절한 헤더를 포함하여 응답한다.

주요 CORS 헤더

  • Access-Control-Allow-Origin - 이 헤더는 리소스를 허용할 출처를 지정한다.``
  • Access-Control-Allow-Methods - 서버가 허용하는 HTTP 메서드를 지정한다.(예: GET, POST, PUT, DELETE 등).
  • Access-Control-Allow-Headers - 클라이언트가 요청에서 사용할 수 있는 헤더를 지정한다.
  • Access-Control-Allow-Credentials - 클라이언트가 쿠키나 인증 정보를 포함하여 요청을 보낼 수 있는지 여부를 결정한다.
  • Access-Control-Expose-Headers - 클라이언트가 응답 헤더 중 일부에 접근할 수 있도록 허용하는 헤더이다.

3. 브라우저의 검증

브라우저는 서버의 응답을 검토하여 실제 요청의 허용 여부를 결정한다.

4. 실제 요청

Preflight 요청에 대한 응답이 긍정적이라면, 브라우저는 실제 요청을 서버로 보내고 서버는 요청에 대해 적절한 CORS 헤더를 추가하여 응답을 반환한다.

profile
배우는 과정에 즐거움을 느끼고 있습니다.

0개의 댓글