[Network] Cors란?

CORS(Cross-Origin-Resource Sharing)는 다양한 원천(Origin) 사이에서 자원(Resource)을 공유할 수 있도록 하는 웹 보안 메커니즘입니다. 현대에 클라이언트와 서버를 분리해 개발하면서 많이 사용되므로 필수적인 기술입니다.

 

CORS란 무엇인가?

웹 페이지는 SOP(Same Origin Policy)정책을 따르기에 동일한 출처의 리소스만 공유할 수 있습니다. 하지만 웹 서비스가 커지고 클라이언트와 서버를 분리함으로 다른 출처와의 리소스 공유가 발생했고, 다른 출처와 리소스를 공유할 수 있도록 허용해주는 것을 CORS라고 합니다.

 

Origin이란 무엇인가?

Origin은 프로토콜, 도메인 이름, 포트번호를 말하고 오리진이 다르다는 것은 이 3개 중에 하나라도 다른면 다른 오리진이라고 한다.

  • http, https 프로토콜이 다르다.
  • domain.com, domain.ac.kr 도메인이 다른다.
  • :8080, :8081 포트 번호가 다르다.

 

CORS의 작동 원리

Simple request인 경우

  • 웹 클라이언트는 다른 도메인의 서버에 요청을 보낼때 요청 헤더에 Origin이라는 필드에 도메인을 담아서 보낸다.
  • 서버가 응답 할 때 헤더에 Access-Control-Access-Origin이라는 값에 "이 리소스를 접근하는 것이 허용된 출처"를 내려주게 된다.
  • 응답을 받은 브라우저는 자신이 보낸 Origin과 서버에서 받은 Access-Control-Access-Origin을 비교해 본 후 유효한 응답인지 확인한다.

Preflight request인 경우

  • 요청을 나누어서 보내는 방법이다.
  • 본문을 요청하기 전에 OPTION 메서드를 이용해 서버로 요청을 보내고 해당 요청이 유효한지 확인합니다.
  • 유효한 요청이면 출처 허용이 되어 본문을 요청하여 응답을 받습니다.
  • 만약 유효하지 않은 요청이 오면 요청은 중단되고 에러가 발생합니다.

'CS > Network' 카테고리의 다른 글

인증 방식(쿠키, 세션, JWT)  (0) 2024.04.05