47 lines
2 KiB
Python
47 lines
2 KiB
Python
"""
|
||
Конфигурация CORS для FastAPI-приложения GONETS.
|
||
|
||
Модуль инкапсулирует добавление middleware `CORSMiddleware` со списком
|
||
разрешённых источников (origins), характерных для локальной разработки и
|
||
типовых портов фронтенда (например, Vite/React на 5173/5174, dev‑серверы).
|
||
|
||
Использование:
|
||
cors_config = CORSMiddlewareConfig(app)
|
||
cors_config.add_cors_middleware()
|
||
|
||
Поведение:
|
||
- Разрешены все методы (`allow_methods=["*"]`) и заголовки (`allow_headers=["*"]`).
|
||
- Разрешены креденшлы (`allow_credentials=True`) для работы с куками (локаль и др.).
|
||
- При необходимости список `origins` можно расширить или параметризовать
|
||
на основе конфигурационного файла окружения.
|
||
"""
|
||
from fastapi import FastAPI
|
||
from starlette.middleware.cors import CORSMiddleware
|
||
|
||
|
||
class CORSMiddlewareConfig:
|
||
"""
|
||
Класс для настройки CORS политики в FastAPI
|
||
"""
|
||
|
||
def __init__(self, app: FastAPI) -> None:
|
||
"""Инициализируем приложение FastAPI и список допустимых CORS-оригинов"""
|
||
self.app = app
|
||
self.origins = [
|
||
"http://localhost.tiangolo.com",
|
||
"https://localhost.tiangolo.com",
|
||
"http://localhost",
|
||
"http://localhost:8080",
|
||
"http://localhost:5174",
|
||
"http://localhost:5173",
|
||
]
|
||
|
||
def add_cors_middleware(self) -> None:
|
||
"""Добавляем CORS в приложение FastAPI"""
|
||
self.app.add_middleware(
|
||
CORSMiddleware,
|
||
allow_origins=self.origins,
|
||
allow_credentials=True,
|
||
allow_methods=["*"],
|
||
allow_headers=["*"],
|
||
)
|