본문 바로가기
Spring boot 프로젝트 기록/기본적인 기초 공부

CORS란?

by 으노으뇨 2021. 12. 17.
728x90
반응형
SMALL

CORS는 크로스-오리진-리소스 셰어링의 약자입니다.

처음 리소스를 제공한 도메인이 현재 요청하려는 도메인과 다르더라도 요청을 허락해 주는 웹 보안 방침입니다.

저의 프로젝트의 애플리케이션에서 프론트엔드 서버의 도메인은 http://localhost:3000  입니다.

따라서 현재 Todo 페이지의 Origin은 http://localhost:3000  입니다.

componentDidMount 함수의 fetch 부분에서 http://localhost:8080 으로 새 요청을 보내고있습니다.

이때 브라우저는 2개의 요청을 보내게 되는것입니다.

첫번째 요청은 Option에 메서드를 사용하는 요청입니다.

이 메서드는 보통 이 리소스에 대해 어떤 HTTP 메서드를 사용할 수 있는지 확인하고 싶을 때 보냅니다.

OPTION 요청이 반환되고 CORS 여부 및 GET 요청 사용 가능 여부를 확인하면

두 번째 요청으로 우리가 원래 보내려고 했던 요청을 보냅니다.

개발자 도구의 Network 탭에서 브라우저를 새로 고침하면 리액트 애플리케이션이 실행하는 각종 HTTP 요청을

확인할 수 있습니다.!!

브라우저는 HTTP 요청의 헤더에 이 요청의 Origin을 함께 보냅니다.

HTTP OPTIONS 요청을 보내는 경우 http://localhost:8080 은 이요청을 보낸 리소스의 원래 서버, 즉

요청의 Origin 을 확인합니다.

만약 요청의  Origin이 자신과 같은 Origin 이라면 요청을 수행합니다.

그러나 우리 애플리케이션 처럼 요청의 Origin이 다른경우에는 요청을 거절하게됩니다.

응답의 상태코드가 403, Forbidden 입니다. 또 어떤 HTTP메서드를 사용할 수 있는지도 나와있지 않습니다.

응답코드가 200일때 OK 상태코드입니다. 

그것이 나오게 된다면

Access-control-allow-origin 에 http://localhost:3000, 즉 프론트엔드 어플리케이션 서버의 주소가 적혀있고

Access-Control-Allow-Methods에 허용되는 메서드가 나열되어 있습니다.

따라서 브라우저는 다음 요청들을 보낼수 있게됩니다.

 

728x90
반응형
LIST

'Spring boot 프로젝트 기록 > 기본적인 기초 공부' 카테고리의 다른 글

로컬 스토리지  (0) 2021.12.15
React-router-dom 라이브러리가 필요한 이유  (0) 2021.12.14
JSON 웹 토큰  (0) 2021.12.11
토큰 기반 인증  (0) 2021.12.08
Basic 인증  (0) 2021.12.08

댓글