-
ReactJS | ProxyJavaScript/React JS 2020. 3. 30. 11:40
Proxy
사전적 의미 proxy: 대리
Proxy를 설정한 서버를 Proxy Server라고 함
원래 서버의 대리 역할을 수행하는 서버가 됨
서버가 2개 일 때 발생하는 문제들
데이터 서버: php, Django, JSP etc.
클라이언트 서버: React Dev Server
클라이언트는 특별히 서버가 필요 없지만 create-react-app이 개발 서버를 제공
→ 두 서버에 각각의 PORT 번호를 설정함으로써 각 서버를 식별할 수 있도록 함
→ 여러 가지 문제 발생- 개발 시에는 fetch API 등으로 ('http://localhost:8000/api_path')와 같은 경로로 서버에 데이터를 요청하지만
배포 시에는 '/api_path' 이외의 주소가 있다면 에러 발생 - CORS(Cross-Origin Resource Sharing)
기본적으로 서버는 같은 서버에서만 데이터를 가져올 수 있기 때문에
다른 서버에서 데이터를 교차로 가져오는 경우 CORS를 위반함으로써 에러 발생 - Cookie
서버에서 로그인 기능 구현 시 클라이언트의 브라우저로 Cookie를 전송하는데
서버가 2개라면 자동으로 쿠키를 불러오지 못하게 됨
※ 위와 같은 문제들을 해결하기 위해 proxy를 사용하게 됨
Proxy 사용 시 이점
- 데이터 요청 시 URI만 작성할 수 있게 되며 데이터 요청에 실패하면
자동으로 proxy에 설정된 포트로 데이터를 요청함 - 교차 출처 금지 원칙에 위배되지 않음
즉, CORS 에러가 발생하지 않게 됨 - Cookie를 자동으로 공유할 수 있게 됨
사용 방법
package.json 파일에 다음과 같이 작성
PORT는 데이터 서버의 번호로 지정{ ... "proxy": "http://localhost:PORT" ... }
※ fetch('URL')에서 URI 부분 즉, '/' 이하의 부분만 작성하면 됨
출처 강의: 생활코딩 Create React App - Proxy [https://www.youtube.com/watch?v=VaAWIAxvj0A]
'JavaScript > React JS' 카테고리의 다른 글
ReactJS | Json-Server & Concurrently (0) 2020.04.21 ReactJS | Firebase로 React 프로젝트 DB 연동 및 배포 (0) 2020.04.10 ReactJS | Component Styling (0) 2020.02.28 ReactJS | Component 개요 (0) 2020.02.28 ReactJS | 개요 및 JSX 문법 (0) 2020.02.28 - 개발 시에는 fetch API 등으로 ('http://localhost:8000/api_path')와 같은 경로로 서버에 데이터를 요청하지만