CORS 검토 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
1. CORS가 필요한 상황
- 브라우저 JS에서 서버에 직접 요청 보내는 경우
- 즉, 프론트엔드에서 요청을 보내는 상황이라면 Cross-Origin 상황이기 때문에 fastAPI에서 CORS를 설정해야 한다.
2. 자바 백엔드 서버에서 FastAPI 서버로 요청을 보내는 경우
- 요청 주체가 웹 브라우저가 아님
- 브라우저가 개입하는 상황이 아니기 때문에 CORS가 발동하지 않는다.
a. 프론트엔드 → 백엔드 (브라우저 환경)
- 요청 주체: 브라우저 (JavaScript fetch/axios 등)
- 다른 Origin에 요청하면: CORS 정책이 적용됨
→ 따라서 FastAPI에 CORSMiddleware
로 허용할 origin을 명시해야 정상 응답 가능
b. 백엔드 → FastAPI (서버 간 요청)
- 요청 주체: 서버 (Java, Python, Postman, curl 등)
- 브라우저가 아님 → CORS 자체가 아예 작동하지 않음
→ 따라서 CORS 설정 필요 없음
3. 정리
- Javascript가 한 오리진에서 다른 오리진으로 요청을 보낼 때, 브라우저는 CSRF 공격을 막기 위해 요청을 기본적으로 차단
- 일단, 오리진에 preflight 요청을 보내 요청이 허용되는지 확인한다.
- 응답 받은 헤더에 해당 오리진에서의 요청을 허용한다는 내용(
Access-Control-Allow-Origin
)이 있어야 브라우저가 허용 받은 오리진에 대해 해당 오리진으로 요청을 보낼 수 있게 한다.
- 우리 서버는 자바 백엔드 서버와 서버 간 통신이기 때문에 브라우저 보안 정책의 영향을 받지 않아 CORS를 설정할 필요가 없다.