December 16, 2019
GET, POST, PUT, DELETE
4개의 메소드로 접근되어야 한다.서비스 내의 하나의 resource가 주변에 연관된 resource들과 연결되어 표현이 가능하다.
예를들어 나는 카카오에서 제공하는 API를 사용하고싶다. API를 사용하기 위한 방법중 하나로 REST를 사용할 수 있다. 이것을 REST API라고 부른다. REST 방식으로정보를 요청하고 받아오는것이다.
브라우저는 실제 요청을 전송하기 전에 OPTIONS 메소드를 이용해서 preflight 요청을 서버로 전송합니다. preflight 요청을 받은 서버는 CORS 관련 정보를 헤더에 담아서 클라이언틀 전송합니다.
현재 페이지의 출처(도메인, 프로토콜, 포트)와 하나라도 다른 출처를 가진 페이지에 접근하려 할 때 보안상의 이유(Same Origin Policy)로 인해 요청(접근)이 불가능 합니다.
하지만 REST API등의 외부 호출이 많아지고, 여러 도메인에 대규모로 구성되는 웹 프로젝트가 많아지면서 불편한 정책이 되었습니다. 그래서 웹 브라우저에서 외부 도메인 서버와 통신하기 위한 방식을 표준화 하기위해 CORS가 나왔습니다.
클라이언트는 CORS요청을 하기 위해 새로운 HTTP헤더를 추가합니다. 서버는 클라이언트가 전송한 헤더를 확인해서 요청을 하용할지 말지를 결정합니다. 데이터 사이드 이펙트를 일으킬 수 있는 HTTP 메소드를 사용할 때는 먼저 preflight 요청을 서버로 전송해서 서버가 허용하는 메소드 목록을 HTTP OPTIONS헤더로 획득한 다음에 실제 요청을 전송합니다.