FastAPI 如何在 FastAPI 中启用 CORS

FastAPI 如何在 FastAPI 中启用 CORS

在本文中,我们将介绍如何在 FastAPI 中启用 CORS(跨域资源共享)功能。CORS 是一种浏览器安全机制,用于控制跨域请求的访问权限。当我们使用 FastAPI 构建 Web 应用程序时,可能会遇到需要跨域请求的情况,此时我们需要启用 CORS 功能来允许跨域请求。

阅读更多:FastAPI 教程

什么是跨域请求?

跨域请求是指在浏览器中向不同源(域、协议或端口)发送的 HTTP 请求。浏览器处于安全考虑,只允许在同一源(域、协议和端口)之间进行数据交互,限制了跨域请求的默认行为。为了允许跨域请求,我们需要通过配置启用 CORS 功能。

FastAPI 中启用 CORS

在 FastAPI 中启用 CORS 功能非常简单。我们可以使用 fastapi.middleware.CORSMiddleware 中间件来实现。

首先,让我们通过安装 FastAPI 和 uvicorn 来创建一个简单的示例项目。在命令行中执行以下命令:

pip install fastapi uvicorn

然后,创建一个名为 main.py 的文件,并将以下代码复制进去:

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

app = FastAPI()

# 设置允许跨域请求的来源
origins = [
    "http://localhost",
    "http://localhost:8080",
]

# 添加中间件
app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

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

上述代码中,我们首先导入了 FastAPICORSMiddleware。然后,我们创建了一个 FastAPI 应用程序实例 app

接下来,我们定义了一个名为 origins 的列表,用于设置允许跨域请求的来源。在这个示例中,我们允许来自 localhostlocalhost:8080 的请求。

然后,我们使用 app.add_middleware() 方法添加了 CORSMiddleware 中间件。在中间件的参数中,我们设置了允许的来源、允许携带凭证(例如cookies)、允许的请求方法(这里使用通配符 * 表示允许所有方法)以及允许的请求头(也使用通配符 * 表示允许所有头部信息)。

最后,我们定义了一个根路由 /,并返回了一个包含 “Hello, World!” 消息的 JSON 响应。

现在,我们可以使用 uvicorn 运行这个应用程序。在命令行中执行以下命令:

uvicorn main:app --reload

当应用程序运行时,我们可以通过访问 http://localhost:8000/ 来测试跨域请求的功能。

自定义 CORS 设置

在上述示例中,我们设置了允许跨域请求的来源、允许携带凭证、允许的请求方法和请求头。除了这些设置外,FastAPI 还提供了其他的自定义选项。

以下是一些常用的自定义选项:

  • allow_origin_regex: 允许使用正则表达式来匹配跨域请求的来源。
  • expose_headers: 设置允许浏览器访问的响应头。
  • max_age: 设置响应的 Access-Control-Max-Age 头,用于指定预检请求结果的缓存时间。

除了通过中间件的参数来自定义设置外,我们还可以在每个路由处理程序中使用 fastapi.responses.JSONResponse 来自定义 CORS 设置。

总结

在本文中,我们介绍了如何在 FastAPI 中启用 CORS 功能,以允许跨域请求。我们使用了 fastapi.middleware.CORSMiddleware 中间件,并设置了允许的来源、携带凭证、请求方法和请求头。

通过在 FastAPI 项目中启用 CORS,我们可以轻松地实现跨域请求,并获得更好的开发体验和灵活性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程