Cross-Origin Resource Sharing
, 우리말로는 교차 출처 리소스 공유
입니다.프로토콜
, 도메인
, 포트 번호
중 하나라도 다른 요청을 Cross-Origin
이라고 합니다.프로토콜
, 도메인
, 포트 번호
가 모두 동일하면 출처
가 같다고 표현합니다.Cross-Origin
HTTP 요청을 제한하고 있습니다.Cross-Origin
을 하기 위해서는 서버의 동의가 필요합니다. 이처럼 출처가 다른 요청에 대해 서버에게 동의를 구하고 거절하는 과정이 CORS
이며 이는 HTTP-header를 이용해 진행됩니다.다음을 모두 충족하는 요청을 Simple requests
라고 합니다.
GET
,HEAD
,POST
중 하나를 사용하며Accept
,Accept-Language
,Content-Language
)를 사용하며application/x-www-form-urlencoded
,multipart/form-data
,text/plain
중 하나를 사용하는요청이 바로 simple request입니다.
simple requests의 경우 서버에 곧바로 요청을 보내고, 이에 대한 응답으로 서버가 브라우저에게 Access-Control-Allow-Origin 헤더를 다시 전송합니다.
preflight requests
는 실제 리소스를 요청하기 전에 OPTIONS
라는 메서드로 요청이 안전한지 확인하고 본 요청을 보내는 방법입니다.OPTIONS
메서드로 서버에게 요청을 보내면 서버는 Access-Control-Allow-Origin
를 브라우저에게 전달합니다. 브라우저는 리턴받은 Access-Control-Allow-Origin
를 보고 안전한지를 판단해 CORS
를 수행할 지를 판단합니다.