CORSMiddleware, явно указывая разрешённые origins, методы, заголовки и необходимость передачи credentials.
Как настроить CORS в FastAPI?
Подробный ответ
Что такое CORS
CORS, или Cross-Origin Resource Sharing, — механизм браузера, который контролирует запросы между разными origins. Origin состоит из схемы, домена и порта, поэтому http://localhost:3000 и http://localhost:8000 считаются разными origins.
Подключение CORSMiddleware
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['https://app.example.com'],
allow_credentials=True,
allow_methods=['GET', 'POST', 'PATCH', 'DELETE'],
allow_headers=['Authorization', 'Content-Type'],
)Что означают настройки
allow_origins— список разрешённых frontend origins;allow_credentials— разрешает передавать cookies и credentials;allow_methods— разрешённые HTTP-методы;allow_headers— заголовки, которые браузер может отправить.
Preflight-запрос
Для некоторых запросов браузер сначала отправляет OPTIONS preflight-запрос. CORSMiddleware отвечает на него нужными заголовками и сообщает браузеру, разрешён ли будущий основной запрос.
Безопасность
В production не стоит без необходимости задавать allow_origins=['*']. Если используются cookies или другие credentials, нельзя сочетать wildcard-origin с передачей credentials: нужно явно перечислить разрешённые origins.
Как ответить на собеседовании
Я подключаю CORSMiddleware и явно задаю frontend origins, методы и заголовки. Если API использует cookies, включаю allow_credentials=True и не использую wildcard для origins. CORS — это браузерная защита, а не замена аутентификации и авторизации API.
Оцени свой прогресс