FastAPI:CORS 中间件不支持 GET 方法

Moh*_*Ris 5 fastapi

我尝试在 FastAPI 框架上使用 CORS,但它不适用于 GET 方法

这是我正在处理的代码:


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

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=['*'],
    allow_methods=["*"],
    allow_headers=["*"],
)


@app.get("/test1")
async def test1():
    return {"message": "Hello World"}

Run Code Online (Sandbox Code Playgroud)

Sam*_*Ste 15

我遇到了同样的问题,解决方案是不使用add_middelware,而是执行以下操作:

首次从 Starlette 导入:

from starlette.middleware import Middleware
from starlette.middleware.cors import CORSMiddleware
Run Code Online (Sandbox Code Playgroud)

创建中间件:

middleware = [
    Middleware(
        CORSMiddleware,
        allow_origins=['*'],
        allow_credentials=True,
        allow_methods=['*'],
        allow_headers=['*']
    )
]
Run Code Online (Sandbox Code Playgroud)

进而:

app = FastAPI(middleware=middleware)
Run Code Online (Sandbox Code Playgroud)

这应该有效


Her*_*c53 10

测试时,请确保将Origin标头添加到请求中。否则CORSMiddleware 不会发回 cors 标头。

一开始可能不太清楚,但文档中是这样写的:

简单的请求

任何带有Origin标头的请求。在这种情况下,中间件将照常传递请求,但会在响应中包含适当的 CORS 标头。

因此,任何没有 的请求都Origin将被忽略,CORSMiddleware并且不会添加 CORS 标头。