推荐答案
在 FastAPI 中,可以使用 CORSMiddleware 来处理跨域资源共享 (CORS)。以下是一个示例代码:
// www.javascriptcn.com code example
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
# 添加 CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["https://example.com", "https://another-example.com"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/")
def read_root():
return {"message": "Hello, World!"}在这个示例中,CORSMiddleware 被添加到 FastAPI 应用中,允许来自 https://example.com 和 https://another-example.com 的跨域请求。allow_credentials=True 允许跨域请求携带凭证(如 cookies),allow_methods=["*"] 允许所有 HTTP 方法,allow_headers=["*"] 允许所有 HTTP 头。
本题详细解读
什么是 CORS?
跨域资源共享 (CORS) 是一种机制,允许网页从不同的域请求资源。浏览器出于安全考虑,默认会阻止跨域请求。CORS 通过在 HTTP 头中添加特定的字段来允许或拒绝跨域请求。
FastAPI 中的 CORSMiddleware
FastAPI 提供了 CORSMiddleware 来简化 CORS 的处理。通过将 CORSMiddleware 添加到 FastAPI 应用中,可以轻松配置允许的源、方法、头等。
CORSMiddleware 参数详解
allow_origins: 允许的源列表。可以是一个字符串列表,如["https://example.com"],或者使用"*"允许所有源。allow_credentials: 是否允许跨域请求携带凭证(如 cookies)。默认为False。allow_methods: 允许的 HTTP 方法列表。可以是一个字符串列表,如["GET", "POST"],或者使用"*"允许所有方法。allow_headers: 允许的 HTTP 头列表。可以是一个字符串列表,如["X-Custom-Header"],或者使用"*"允许所有头。
示例代码解析
在示例代码中,CORSMiddleware 被配置为允许来自 https://example.com 和 https://another-example.com 的跨域请求。allow_credentials=True 允许跨域请求携带凭证,allow_methods=["*"] 允许所有 HTTP 方法,allow_headers=["*"] 允许所有 HTTP 头。
通过这种方式,FastAPI 应用可以轻松处理跨域请求,确保前端应用能够安全地与后端 API 进行交互。