프로그래밍 공부방
[React] 프론트엔드에서 CORS 에러 해결하기(Proxy 이용) 본문
💛 문제점
역시나 API 통신을 하려고 하니 프론트쪽에서 cors 에러가 났습니다~~🤦♀️
제가 이전에 토이 프로젝트들을 진행했을 때는 프론트엔드와 백엔드를 제가 구현했기 때문에 백엔드쪽에서 CORS 에러를 해결했었습니다. 백엔드에서 CORS 에러를 해결하는 게 정석이긴 합니다... !
하지만 이번에는 백엔드는 다른 분이 작업하고 저는 프론트만 작업하기 때문에..!!!
제가 해결할 수가 없는 상황이었습니다.
백엔드쪽에서 이 문제를 해결하기 전에 빨리 API 통신을 해보고 싶었기 때문에ㅠㅠ
이번에는 프론트에서 CORS 에러를 해결하는 방법에 대해서 알아보았습니다~~
💛 해결 방법
Proxy 이용하기
1. 우선 npm을 이용해서 http-proxy-middleware를 설치해줍니다.
$ npm install http-proxy-middleware --save
2. src폴더 안에 setupProxy.js 파일을 만들어주고 다음과 같이 적어줍니다.
/* setupProxy.js */
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) {
app.use(
"/api",
createProxyMiddleware({
target: "http://localhost:8080",
changeOrigin: true
})
)
}
이렇게 만들어놓으면 API를 이용할 때 'http://localhost:8080/api/... ' 이런 방식으로 이용하실 수 있습니다.
그래도 혹시 모르니깐 어떻게 api를 구성했는지 보여드리겠습니다!
저는 이렇게 Axios 인스턴스를 만들어놓고 기본이 되는 url쪽에만 /api를 추가해주었습니다.
const BASE_URL = 'http://localhost:8080/api';
const defaultApi = axios.create({
baseURL: BASE_URL,
headers: { "Content-Type": 'application/json' }
})
프론트에서 위와 같이 구성을 하고 통신을 해보았는데요.
하지만 문제가 하나 더 있었습니다. 흑흑.. 백엔드에 이 api 주소가 존재하지를 않는다고 에러가 생긴 것인데요.
이 문제는 백엔드쪽 API 주소에서 앞부분에 /api를 추가해주었더니 해결이 되었습니당!!
결국.. 백엔드쪽에서도 수정을 해버렸네욥....
그렇긴 해도 프론트에서 CORS 에러 해결하는 방법을 알게 되어서 좋았습니다!!😺😺🧡
다음에 협업으로 프로젝트할 때 이런 문제가 또 생긴다면 쉽게 해결할 수 있을 것 같네요~~
'프론트엔드 > React' 카테고리의 다른 글
[React] useEffect VS useLayoutEffect 비교 (0) | 2023.03.25 |
---|---|
[React] 환경변수를 설정했는데 undefined가 뜰 때 (0) | 2023.03.25 |
[React] 메뉴 클릭에 따라 특정 화면만 변경하기 (0) | 2022.10.18 |
[React] 글 목록 출력에 페이징 추가 (0) | 2022.08.13 |
[React] 페이지에 따라 헤더/네비게이션바 색 변경 (props 사용법) (0) | 2022.08.02 |