CORS(교차 출처 리소스 공유)는 브라우저에서만 가지고 있는 체제입니다. 클라이언트가 자신의 도메인과 서로 다른 도메인 간의 리소스를 가져오고 싶은 경우, 정해진 규약을 통해 선택한 리소스에 접근 권한을 부여하도록 브라우저에 알려줍니다.
CORS는 웹 브라우저에서 실행되는 스크립트가 다른 출처(Origin)에서 리소스에 접근할 수 있는 보안 메커니즘을 제공합니다. 이는 웹 애플리케이션이 다른 도메인, 프로토콜 또는 포트에서 호스팅된 리소스에 접근할 때 발생하는 보안 제약을 완화하는 데 사용됩니다.
우리가 쇼핑몰 프로젝트를 만든다고 가정하겠습니다. 로컬 환경에서 클라이언트 앱을 만들고 있을 것입니다. 이때 필요한 리소스가 있어서 외부 API 서버와 통신을 시도하는 경우 CORS 오류를 접합니다.
이 때 보통 CORS 오류의 원인은 동일한 도메인의 리소스만 상호 작용을 허용하는 SOP 제한으로 인한 오류가 대부분이며, 이를 해결하려면 CORS를 구성해 줘야 합니다.
브라우저에 자바스크립트가 도입된 이후, Netscape Navigatorr 2.02 버전에서 웹 보안을 위해 SOP가 등장합니다. 이는 동일한 도메인의 리소스만 상호 작용을 허용하는 정책인 것이죠. 이 말은 서로 다른 도메인의 리소스를 받아오는 것은 제한함으로써 잠재적인 보안 위협으로부터 보호해 주는 정책입니다.
하지만 개발을 하다 보면 기능상 어쩔 수 없이 다른 도메인과 상호 작용을 해야 하는 경우가 존재합니다. 이를 대비하기 위해 SOP의 예외 정책으로 CORS 체제를 마련해 두었고, 결론적으로 CORS를 구성하여 사용하면 SOP의 제한을 받지 않게 됩니다.