CORS?
CORS(Cross Origin Resource Sharing) : 클라이언트 애플리케이션과 다른 origin을 가진 서버 애플리케이션이 서로 통신할 수 있도록 허용하는 프로토콜
- 교차 출처 리소스 공유 혹은 교차 출처 자원 공유라고 한다.
- 여기서 다른 orgin은 뭘까?
- 다른 origin이란 예를 들어 클라이언트 애플리케이션은 www.mysite.com 으로 올라가 있는 반면 서버 애플리케이션은 www.serverapi.com 으로 올라가 있다고 했을 때 클라이언트와 서버 애플리케이션은 다른 origin을 가졌다고 말합니다.
- 사실 클라이언트와 서버는 같은 origin을 가진 경우에만 서로 통신을 할 수 있다. 이를 Same Origin Policy 라고도 한다.
- 그 이유는 클라이언트와 서버의 origin이 달라도 통신을 무조건 허용하면 클라이언트에서 악의적으로 서버에 접근할 가능성이 너무 높기 때문이다.
- 즉, 보안을 위해서 같은 origin일 때만 통신을 할 수 있는 것이다.
- 그래서 같은 origin을 가진 경우에만 통신을 허용하여 웹 브라우저에서는 다른 origin을 가진 서버에 API를 호출할려고 하면 요청 자체를 막아버린다.
- 그런데 클라이언트와 서버가 같은 origin을 가진 경우는 그렇게 많지 않다.
- 여러가지 이유가 있지만 그 중 프로젝트에서 클라이언트의 크기가 커지면서
클라이언트는 클라이언트데로 별도로 관리하기 위해 별도의 origin을 가지게 되었고
서버는 서버데로 origin을 가지게 된 경우가 그렇다.
- 물론 보안적인 이슈로 인해 클라이언트와 서버 애플리케이션을 다른 origin에 넣는 경우도 많다.
- 유저에게는 서버에 직접적으로 접근할 수 있는 모든 방향을 차단하는 것이 좋기 때문이다.
👉🏻 그래서 CORS가 필요한 것이다. 서로 다른 origin에서도 통신이 가능해야하는 상황이 온 것이기 때문이다.
React와 Spring Boot CORS통신 방법
- Spring과 React 통신 시에 CORS 에러 해결
- [Spring] Spring Security, React를 사용하면서 CORS 허용하는 방법
- 리액트 - 스프링부트 연동 CORS 이슈 해결!
- [Spring Security] CORS
참고자료
- CORS란 무엇인가: CORS는 브라우저 하는 일
- [Browser] CORS란?
- CORS란 무엇인가?
- CORS란?
- 교차 출처 리소스 공유
작성일자 : 2022년 7월 22일