클라이언트에서 서버에 자원을 요청할 때 url을 사용하는데 먼저 url 주소의 구성을 보면
protocol://host/path?query=string&query=string#fragment
protocol
, host
, path
, querystring
, fragment
로 이루어져 있다.
이 중 protocol
과 host:port
가 origin resource
라고 한다.
정리하면 protocol,host:port가 완전히 다른 곳에서 자원을 요청할 때 필요한게 CORS이다.
Web에서 구현되는 Javascirpt는 Web page 내 구현되어 있는 code에 접근이 쉽게 가능하기 때문에 보안에 취약하다는 단점이 있다.
Simple requests :
GET
, POST
, HEAD
method를 사용할 때 요청한다.
자동으로 기본 setting 되어 있는 headers 이 외에 추가 header가 있는 경우 거부.
Preflighted requests :
PUT
, DELETE
, CONNECT
, TRACE
, PATCH
method를 사용할 때 OPTIONS
method에 의해 임시 요청을 보내 맞는 응답이 왔는지 확인하는 과정이다.
기본 set headers 이 외 추가 header를 추가 설정할 때 Preflighted requests 실행.
Content-type 이 외 내용이 추가되었을 때 실행.
Reference