성장 경험/트러블 슈팅
[트러블 슈팅] CORS 허용 문제
Tarake
2025. 6. 24. 21:38
문제 상황
FastAPI 서버에서는 RTSP 영상을 받아 React 서버에 전달하는 구조를 구현한 뒤, 외부 컴퓨터에서 FastAPI 서버에 접근이 되지 않는 문제가 발생하였습니다.
FastAPI는 정상적으로 실행되었고, CORS 설정에서 origins=" * " 으로 모든 도메인을 허용했지만 여전히 접속이 불가능한 문제가 발생했습니다.
원인 분석
FastAPI 서버는 uvicorn으로 실행 중이었고, 해당 실행 명령은 다음과 같았습니다.
uvicorn main:app --host 127.0.0.1 --port 8000
이 설정은 로컬 호스트(127.0.0.1)에서만 접근을 허용하기 때문에, 같은 컴퓨터에서는 접속이 가능하지만, 다른 컴퓨터에서는 접속이 불가능합니다.
CORS 설정은클라이언트 측에서의 보안 문제를 다루는 것이며, 서버 자체의 접근 가능 여부와는 별개로 CORS 설정이 열려 있어도 host가 외부를 허용하지 않으면 접속이 불가능합니다.
해결 방법
uvicorn 실행 시 호스트를 0.0.0.0 으로 설정하여, 모든 외부 주소를 접속할 수 있도록 변경하였습니다.
기존 실행 명령
uvicorn main:app --host 127.0.0.1 --port 8000
수정된 실행 명령
uvicorn main:app --host 0.0.0.0 --port 8000
회고 및 배운 점
- CORS 허용은 브라우저의 요청 정책을 제어하는 것이고, 서버 접근 허용은 별도의 네트워크 설정이라는 점을 명확히 인지하게 되었습니다.
- FastAPI에서 외부 접속을 허용하려면 반드시 --host 0.0.0.0 으로 설정해야 하며, 내부 테스트에서는 127.0.0.1 로도 충분하지만 실제 배포 환경이나 외부 접근 환경에서는 다른 설정이 필요함을 배웠습니다.