CORS

Jinhyeon Son·2020년 7월 22일
0

개념

목록 보기
26/26

CORS란?

웹 상에는 스크립트가 작동한 페이지의 origin과 스크립트가 요청하는 origin이 같아야 하는
Same Origin Policy가 적용되어있다.
그러나 최근 웹 트렌드 상 클라이언트 사이드 렌더링이 보편화 되면서 Origin이 다른 서버
(예를 들면 백엔드)등과 통신해야할 필요성이 생기게 되어 등장한 정책이다.

Cross Origin(origin이 같지 않은) 서버로부터 Resource를 Sharing할 수 있는 정책으로
CORS를 만족할 경우 웹의 Same Origin Policy를 우회하여 현재 브라우저의 origin과
다른 서버에 접근하여 resource를 로드할 수 있다

Origin

Origin이 같다는건 Protocol, Host, Port 3가지가 일치함을 뜻한다

동작

  1. 브라우저가 HTTP request header의 origin 필드에 페이지의 origin을 담아 request
  2. 서버는 response header의 Access-Control-Allow-Origin 필드에
    자신의 cors 허용 origin을 담아 response
  3. 브라우저가 response header의 Access-Control-Allow-Origin값과 자신의 origin값을
    비교하여 서로 다를 경우 response를 drop

서버사이드

  • Access-Control-Allow-Origin: 요청을 허용하는 origin
  • Access-Control-Allow-Credentials: 클라이언트 요청이 쿠키를 통해서 자격 증명을 해야하는 경우 true. 이 경우 클라이언트가 정해진 규격의 쿠키와 함께 요청을 보내야한다.
  • Access-Control-Allow-Methods: 요청을 허용하는 메소드. 일 경우 전부, 기본값은 GET, POST이다. preflight를 허용해야하므로 OPTIONS를 포함시킨다.

알아둬야할 사항

CORS를 판단하는 주체는 서버가 아니라 클라이언트이다.
서버는 자신이 허용하지 않는 origin으로 부터 받은 request에 대해서도
똑같이 response를 보낸다. 패킷을 Drop하는것은 브라우저이다

0개의 댓글