跨域资源共享(CORS)是一种机制,它使用额外的 HTTP 头来告诉浏览器,哪些跨域请求是允许的。FastAPI 提供了内置的中间件 fastapi.middleware.cors.CORSMiddleware 来简化 CORS 的配置。

以下是一个使用 FastAPI 中间件处理 CORS 的示例:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

# 添加 CORS 中间件,以处理跨域请求
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许所有来源
    allow_credentials=True,
    allow_methods=["*"],  # 允许所有 HTTP 方法
    allow_headers=["*"],  # 允许所有 HTTP 头部
)

# 路径操作函数
@app.get("/")
async def read_root():
    return {"message": "Hello, World!"}

在这个示例中,CORSMiddleware 中间件被添加到 FastAPI 应用程序中。在中间件的配置中,我们使用了以下参数:

  •  allow_origins: 允许跨域请求的来源。在示例中,使用 ["*"] 表示允许所有来源,你也可以指定具体的域名或来源列表。

  •  allow_credentials: 是否允许发送身份凭证(例如 cookies、HTTP 认证)。如果设置为 True,则允许发送身份凭证。

  •  allow_methods: 允许的 HTTP 方法。在示例中,使用 ["*"] 表示允许所有 HTTP 方法,你也可以指定具体的方法列表(例如 ["GET", "POST"])。

  •  allow_headers: 允许的 HTTP 头部。在示例中,使用 ["*"] 表示允许所有 HTTP 头部,你也可以指定具体的头部列表。


使用这个中间件后,FastAPI 将自动处理预检请求(OPTIONS 请求)和主请求,确保你的应用程序能够正确处理跨域请求。

注意:在实际生产环境中,请根据你的应用程序需求和安全策略,配置 CORS 中间件的参数。不建议在生产环境中使用 allow_origins=["*"],因为这可能会引起安全问题。指定明确的来源是更安全的做法。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7395/FastAPI