FastAPI основан на Starlette, поэтому вы можете использовать любую настройку CORS, которую обычно используете с Starlette.
Для удобной работы с CORS в FastAPI можно использовать пакет `fastapi-cors`. Он предоставляет дополнительные функции и параметры для настройки CORS в FastAPI.
Вот пример, как добавить проверку CORS в FastAPI с использованием `fastapi-cors`:
Установите пакет `fastapi-cors`:
```bash
pip install fastapi-cors
```
Импортируйте `FastAPI` и `CORSMiddleware` из `fastapi` и `fastapi_cors` соответственно:
```python
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
```
Создайте экземпляр FastAPI:
```python
app = FastAPI()
```
Настройте CORS Middleware:
```python
origins = [
"http://example1.com",
"http://example2.com",
"http://example3.com",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
```
В приведенном выше примере, `allow_origins` указывает список разрешенных origin, `allow_credentials` позволяет передавать куки и заголовки аутентификации, `allow_methods` указывает разрешенные HTTP-методы, а `allow_headers` указывает разрешенные заголовки.
Вы также можете указать условные ограничения CORS с использованием лямбда-функций или других подходов в зависимости от параметра `tenant`. В этом случае, вам может потребоваться прочитать документацию Starlette по настройке CORS, так как FastAPI полагается на его функционал.
Некоторые проекты на базе FastAPI/Starlette, где можно изучить реализацию CORS, включают в себя:
- `cookiecutter-fastapi`: https://github.com/tiangolo/full-stack-fastapi-postgresql
- `FastAPI-RealWorld-Example-App`: https://github.com/nsidnev/fastapi-realworld-example-app
- `fastapi-pyjwt`: https://github.com/lmas/fastapi-pyjwt
Установите и изучите их для получения дополнительной информации о реализации CORS в FastAPI.