에듀테크 프로젝트 대시보드
미들웨어와 CORS
미들웨어는 모든 요청/응답을 감싸는 공통 처리 레이어입니다. 로깅, 타이밍, 헤더 추가, CORS.
import time
from fastapi import Request
@app.middleware("http")
async def add_process_time(request: Request, call_next):
start = time.perf_counter()
response = await call_next(request)
response.headers["X-Process-Time"] = f"{time.perf_counter() - start:.4f}"
return response나중에 추가한 미들웨어가 바깥쪽(요청을 먼저 받고 응답을 마지막에 처리). 요청: 바깥→안, 응답: 안→바깥.
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["https://offset0xf.com", "http://localhost:5173"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)allow_credentials=True 와 allow_origins=["*"] 는 동시 사용 불가 (브라우저가 거부)| 미들웨어 | 용도 |
|---|---|
GZipMiddleware | 응답 압축 (minimum_size) |
TrustedHostMiddleware | Host 헤더 화이트리스트 |
HTTPSRedirectMiddleware | HTTP→HTTPS (이 서버는 Nginx 가 담당) |
/docs 에 반영, 테스트 오버라이드 쉬움