문제 상황
프론트에서 Axios 요청을 보냈을 때 다음과 같은 에러가 발생했다.
AxiosError: Network Error
개발자 도구 콘솔에서는 추가로 아래 에러가 확인되었다.
Access to XMLHttpRequest at 'http://localhost:9999/category'
from origin 'http://localhost:3000' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present
원인 추론 — 서버 문제인가?
아예 백엔드 서버가 실행되지 않았을 때와 같이 보이는 오류였고, Network Error라는 메시지 때문에 다음과 같은 가능성을 우선적으로 의심했다.
- 서버가 실행되지 않음
- 포트 번호 불일치
- 잘못된 URL 요청
👉 그러나 서버는 정상 실행 중이고, http://localhost:9999 도 포스트맨이나, 브라우저로 잘 접속 되어 단순 네트워크 문제는 아니었다.
원인 추론 — Axios 설정 문제?
개발자도구의 콘솔 에러에서 핵심 메시지를 발견했다.
No 'Access-Control-Allow-Origin' header is present
- 서버가 CORS 허용 헤더를 보내지 않음
- 브라우저가 요청 자체를 차단
Axios 설정을 점검했다.
const axiosInstance = axios.create({
baseURL: "http://localhost:9999",
timeout: 30000,
withCredentials: true
});
withCredentials: true 이 옵션은 쿠키를 포함한 요청을 보내는 설정이며 CORS 정책이 더 엄격하게 적용된다.
→ 이 시점에서 “CORS 문제 가능성”을 의심했다.
Axios 문제가 아니라 브라우저 보안 정책에 의해 차단된 상황
최종 해결
npm install CORS
CORS 다운로드 후
CORS 미들웨어 최상단에 추가하였다.
const cors = require("cors");
app.use(cors({
origin: "http://localhost:3000",
credentials: true
}));
app.use(express.json());
app.use("/users", userRouter);
app.use("/books", bookRouter);
app.use("/category", categoryRouter);
- Network Error 해결
- CORS 에러 사라짐
- /category API 정상 응답 확인
알게 된 것
- withCredentials: true 사용 시 CORS 설정은 반드시 구체적으로 해야 한다
- Express에서는 CORS 미들웨어를 라우터보다 먼저 등록해야 한다
'트러블슈팅' 카테고리의 다른 글
| [postman/node.js] Error:connect ECONNREFUSED (0) | 2026.03.04 |
|---|---|
| [Node.js] node.js 말도없이 삐져서 서버가 꺼지는 이슈.. (0) | 2026.01.23 |
| [GitHub] 깃허브 커밋 메시지 컨벤션 (0) | 2026.01.21 |
| [GIT] 깃허브 pull&request 불가오류 (0) | 2025.06.29 |