FastAPIでCORSエラーを解決する方法


CORSエラーを解決するためには、いくつかの方法があります。以下に、シンプルで簡単な方法とコード例をいくつか紹介します。

  1. Starletteのミドルウェアを使用する方法: FastAPIは、Starletteフレームワークをベースにしているため、Starletteのミドルウェアを使用してCORSエラーを解決することができます。以下は、FastAPIにStarletteのCORSMiddlewareを追加する例です。
from fastapi import FastAPI
from starlette.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リストに許可するオリジンを指定しています。必要に応じて、オリジンを追加または変更することができます。

  1. FastAPIのデコレータを使用する方法: FastAPIには、CORSエラーを解決するためのデコレータも用意されています。以下は、FastAPIの@app.middleware("http")デコレータを使用する例です。
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
origins = [
    "http://localhost",
    "http://localhost:3000",
]
@app.middleware("http")
async def add_cors_header(request, call_next):
    response = await call_next(request)
    response.headers["Access-Control-Allow-Origin"] = ",".join(origins)
    response.headers["Access-Control-Allow-Credentials"] = "true"
    response.headers["Access-Control-Allow-Methods"] = "*"
    response.headers["Access-Control-Allow-Headers"] = "*"
    return response

上記の例では、originsリストに許可するオリジンを指定し、それぞれのヘッダーを設定しています。

これらの方法を使用することで、FastAPIでCORSエラーを解決することができます。適切なオリジンを設定し、必要なヘッダーを追加することで、異なるオリジンからのリクエストを正常に処理できるようになります。

以上が、FastAPIでCORSエラーを解決する方法についてのシンプルで簡単な解説とコード例です。これを参考にして、自身のFastAPIプロジェクトでCORSエラーを解決してください。