PRO

Как настроить CORS в FastAPI?

CORS определяет, какие браузерные приложения с другого origin могут обращаться к API. В FastAPI его настраивают через CORSMiddleware, явно указывая разрешённые origins, методы, заголовки и необходимость передачи credentials.
Подробный ответ

Что такое 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.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге