Choorai

CORS 기초

프론트와 백엔드 주소가 다를 때 왜 막히는지, 어떤 설정이 필요한지 빠르게 정리합니다.

핵심 개념

  • Same-Origin: 프로토콜/도메인/포트가 같아야 같은 출처
  • CORS: 교차 출처 요청 허용 규칙
  • Preflight: 본 요청 전 브라우저가 보내는 OPTIONS 확인 요청
  • Credentials: 쿠키/인증 정보 포함 요청

왜 에러가 나는가?

브라우저는 다른 출처 API 호출을 기본 차단합니다. 서버 응답 헤더에 허용 정보가 없으면 CORS 에러가 발생합니다.

FastAPI 설정 예시

app/main.py
from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
  CORSMiddleware,
  allow_origins=["http://localhost:5173"],
  allow_credentials=True,
  allow_methods=["*"],
  allow_headers=["*"],
)

Express/Nest 설정 예시

main.ts
app.enableCors({
  origin: ['http://localhost:5173'],
  credentials: true,
});

초심자 실수 TOP 3

  • allow_origins: ['*']credentials: true를 동시에 사용
  • 개발/배포 URL을 헷갈려 잘못된 origin만 허용
  • 프리플라이트 OPTIONS 응답을 서버가 막아버림

60분 챌린지 연결 지점

디버깅 체크리스트

  • 브라우저 콘솔이 아니라 Network의 Response Headers 확인
  • 요청 Origin과 서버 허용 Origin이 정확히 같은지 확인
  • 쿠키 인증이면 credentials 양쪽 설정 동시 확인

마지막 업데이트: 2026년 2월 22일 · 버전: v0.0.1

피드백 보내기

입력한 내용으로 새 이슈 페이지를 엽니다.

GitHub 이슈로 보내기