[python] FastAPI에서 CORS 처리하기

Cross-Origin Resource Sharing (CORS)는 웹 애플리케이션이 다른 도메인의 리소스에 접근할 수 있도록 허용하는 보안 메커니즘입니다. FastAPI는 빠르고 간단한 CORS 처리를 제공하여 클라이언트가 서버에 안전하게 요청을 보낼 수 있도록 도와줍니다. 이번 블로그 포스트에서는 FastAPI에서 CORS를 처리하는 방법에 대해 알아보겠습니다.

FastAPI에서 CORS 미들웨어 사용하기

FastAPI에서 CORS를 처리하기 위해 fastapi.middleware 모듈에 있는 CORS 클래스를 사용할 수 있습니다. 먼저 FastAPI 애플리케이션에 CORS 미들웨어를 추가해야 합니다.

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

origins = [
    "http://localhost",
    "http://localhost:3000",
]

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

위 코드에서 origins 리스트에는 허용할 클라이언트 도메인을 추가할 수 있습니다. allow_origins 매개변수에 *를 사용하면 모든 도메인에서 요청을 허용합니다. allow_credentials를 True로 설정하면 클라이언트에게 쿠키와 같은 인증 정보를 전송할 수 있습니다. allow_methodsallow_headers에는 허용할 HTTP 메서드와 헤더를 지정할 수 있습니다.

예외 도메인 설정

특정 도메인에 대해서는 CORS 정책을 예외로 처리하고 싶을 수 있습니다. 이 경우 add_middleware 메서드에 allow_origins 매개변수에 함수를 지정하여 예외 도메인을 처리할 수 있습니다.

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

def custom_origins():
    return [
        "http://localhost",
        "http://localhost:3000",
        "https://example.com"
    ]

app.add_middleware(
    CORSMiddleware,
    allow_origins=custom_origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

위 코드에서 custom_origins 함수는 허용할 클라이언트 도메인 리스트를 반환합니다. 이 함수를 사용하면 동적으로 예외 도메인을 추가하거나 제거할 수 있습니다.

결론

이번 블로그 포스트에서는 FastAPI에서 CORS를 처리하는 방법에 대해 알아보았습니다. FastAPI의 CORS 미들웨어를 사용하면 간단하게 CORS를 처리할 수 있으며, 예외 도메인을 처리하는 방법도 알아보았습니다. 이를 통해 FastAPI 애플리케이션에서 안전한 클라이언트 요청을 처리할 수 있습니다.

참고문헌: