CORS는 Cross-Origin Resource Sharing의 약자로 "교차 출처 리소스 공유 정책"입니다. 한 origin에서 다른 origin의 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다.
여기서 교차 출처라고 하는 것은 다른 출처를 의미합니다.
URL은 마치 하나의 문자열 같아 보여도, 사실은 여러개의 구성 요소로 이루어져있습니다.
여기서 Origin은 Protocol
과 Host
그리고 Port
를 합친 것을 의미합니다.
만약 Origin에 대해 감이 잡히지 않았다면 코드로 확인할 수 있습니다.
먼저 SOP(Same Origin Policy) 정책은 동일한 출처에 대한 정책을 말합니다. SOP 정책은 '동일한 출처에서만 리소스를 공유할 수 있다.'라는 규칙을 가지고 있습니다. 즉, 동일 출처(Same-Origin) 서버에 있는 리소스는 자유로이 가져올수 있지만, 다른 출처(Cross-Origin) 서버에 있는 이미지나 유튜브 영상 같은 리소스는 상호작용이 불가능하다는 말입니다.
동일 출처가 아닌 경우 접근을 차단하는 이유는 무엇일까요? 당연히 보안이 이유겠죠. 악의적인 외부 리소스를 막기 위해 브라우저에서 사전에 방지하는 것입니다.