CORS의 기본 개념에 대한 이해가 부족하여 https://hannut91.github.io/blogs/infra/cors 를 참고하여 작성하였습니다.
브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한한다. 그래서 cross-origin 요청을 하려면, 서버의 동의가 필요하다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절안다.
이러한 허락을 구하고 거절하는 메커니즘을 HTTP-header를 통해 할 수 있는데, 이를 CORS라고 한다. CORS는 Cross-origin resource sharing의 약자로 교차 출처 리소스 공유를 의미한다. 웹 체이지상의 제한된 리소스(자원)를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용되는 구조이다.
cross-origin은 다음 예시 중 단 한 가지라도 다른 경우를 이야기 한다.
(1) 도메인 : domain.com과 other-domain.com은 다르다.
(2) 포트번호 : http와 https
(3) 프로토콜 : port 8080과 port 3000
CORS가 없이 모든 곳에서 데이터를 요청할 수 있게 되면, 다른 사이트에서 원래 사이트를 똑같이 따라하여 흉내낼 수 있게 된다. 기존 웹사이트와 완전히 동일하게 동작할 수 있도록 하여 user가 로그인을 하도록 유도하고, 로그인 했던 그 세션을 탈취하여 악의적으로 정보를 추출하거나 다른 사람의 정보를 입력하는 등의 공격을 할 수 있다. 따라서 공격을 할 수 없도록 브라우저에서 보호하고 필요한 경우에만 서버와 협의하여 요청할 수 있도록 하기 위해 필요하다.
잘 보고 갑니다
!