FastAPIでCORSの設定をしたにもかかわらずなおCORSエラーが出る場合の対処法

PythonFastAPI

cover image from Unsplash

Photo by Migle Siauciulyte on Unsplash

本記事について

FastAPI で CORS (Cross-Origin Resource Sharing)の設定をしたが、依然フロントエンドの CORS エラーが消えなくて困ったので、その際の対処方法を紹介する。

問題のコード

公式ドキュメントにならって middleware を設定した。 けれどもフロントエンドの CORS エラーは解消せず。

from fastapi import FastAPI
 
from fastapi.middleware.cors import CORSMiddleware
 
app = FastAPI()
 
# CORS settings
origins = [
    "http://localhost:3000",
]
app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

解決方法

ミドルウェアのライブラリをStarletteに差し替えることで、CORS エラーが解消された。

from fastapi import FastAPI
 
from starlette.middleware import Middleware
from starlette.middleware.cors import CORSMiddleware
 
# CORS settings
origins = [
    "http://localhost:3000",
]
middleware = [
    Middleware(
        CORSMiddleware,
        allow_origins=origins,
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )
]
 
app = FastAPI(middleware=middleware)