본문 바로가기
Python

[Python] FastAPI에서 CORS 정책 적용하기

by teamnova 2024. 2. 15.

이번 시간에는 서버를 구축할때 신경써야할 CORS 정책을 FastAPI 서버에서 적용해보겠습니다.

 

1. CORS 정책이란?

CORS는 Cross-Origin Resource Sharing의 약자로, 웹 페이지에서 다른 도메인의 리소스에 접근할 때 발생하는 보안 정책입니다.

웹 브라우저는 기본적으로 동일 출처 정책(Same-Origin Policy)을 따르는데, 이는 웹 페이지가 동일한 출처에서만 리소스를 요청할 수 있다는 원칙입니다. 출처는 프로토콜, 호스트, 포트가 동일한 경우에 해당합니다.

CORS를 적용하지 않고 다른 도메인의 리소스를 요청할 경우 아래와 같은 에러가 발생합니다.

CORS 정책으로 인한 에러 예시

 

이를 해결하기 위해서는 서버에 접근하는 도메인을 허용하도록 만들어야 합니다.

FastAPI 서버에서 진행해보겠습니다.

 

 

2. 코드

FastAPI에서 제공하는 CORS 미들웨어 라이브러리를 사용하여  해결할 수 있습니다.

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware # CORS 미들웨어 라이브러리 불러오기

app = FastAPI()

# 도메인 명시
origins = [
    # "*"
    # "http://xxx.xxx.xxx.xxx"
    "http://{접근 허용하고자 하는 도메인}",
]

# CORS 미들웨어 추가
app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,       # 접근 허용할 도메인 지정
    allow_credentials=True,    # 인증 정보(쿠키 등)를 허용할지 여부를 설정
    allow_methods=["*"],       # 허용할 HTTP 메서드를 지정, 여기서는 모든 메서드 허용
    allow_headers=["*"],       # 허용할 HTTP 헤더를 지정, 여기서는 모든 헤더 허용
)

@app.get("/test")
async def test():
    return {"test": "Success"}