Я отправляю запрос на поулчение списка всех от бэка (FastAPI), он выдает ошибку следующую:
Отправляем запрос к API...
TurbineSearch.tsx:22 Отправляем запрос к API...
localhost/:1 Access to fetch at 'http://localhost:8000/turbines/' from origin 'http://localhost:3001' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
TurbineSearch.tsx:24 
        
        
       GET http://localhost:8000/turbines/ net::ERR_FAILED 200 (OK)
fetchTurbines @ TurbineSearch.tsx:24
(anonymous) @ TurbineSearch.tsx:42
commitHookEffectListMount @ chunk-GGRJ7SSM.js?v=c64dd496:16881
invokePassiveEffectMountInDEV @ chunk-GGRJ7SSM.js?v=c64dd496:18290
invokeEffectsInDev @ chunk-GGRJ7SSM.js?v=c64dd496:19667
commitDoubleInvokeEffectsInDEV @ chunk-GGRJ7SSM.js?v=c64dd496:19652
flushPassiveEffectsImpl @ chunk-GGRJ7SSM.js?v=c64dd496:19469
flushPassiveEffects @ chunk-GGRJ7SSM.js?v=c64dd496:19413
(anonymous) @ chunk-GGRJ7SSM.js?v=c64dd496:19294
workLoop @ chunk-GGRJ7SSM.js?v=c64dd496:195
flushWork @ chunk-GGRJ7SSM.js?v=c64dd496:174
performWorkUntilDeadline @ chunk-GGRJ7SSM.js?v=c64dd496:382
Show 10 more frames
Show less
TurbineSearch.tsx:35 Ошибка запроса: TypeError: Failed to fetch
    at fetchTurbines (TurbineSearch.tsx:24:32)
    at TurbineSearch.tsx:42:5
    at commitHookEffectListMount (chunk-GGRJ7SSM.js?v=c64dd496:16881:34)
    at invokePassiveEffectMountInDEV (chunk-GGRJ7SSM.js?v=c64dd496:18290:19)
    at invokeEffectsInDev (chunk-GGRJ7SSM.js?v=c64dd496:19667:19)
    at commitDoubleInvokeEffectsInDEV (chunk-GGRJ7SSM.js?v=c64dd496:19652:15)
    at flushPassiveEffectsImpl (chunk-GGRJ7SSM.js?v=c64dd496:19469:13)
    at flushPassiveEffects (chunk-GGRJ7SSM.js?v=c64dd496:19413:22)
    at chunk-GGRJ7SSM.js?v=c64dd496:19294:17
    at workLoop (chunk-GGRJ7SSM.js?v=c64dd496:195:42)
Вот код бэкенда где находится CORS и api-шка /turbines/
import json

import sentry_sdk
from fastapi import FastAPI
from fastapi.routing import APIRoute
from fastapi.middleware.cors import CORSMiddleware

from backend.app.crud import create_calculation_result
from backend.app.api.main import api_router
from backend.app.core.config import settings

def custom_generate_unique_id(route: APIRoute) -> str:
    return f"{route.tags[0]}-{route.name}"


if settings.SENTRY_DSN and settings.ENVIRONMENT != "local":
    sentry_sdk.init(dsn=str(settings.SENTRY_DSN), enable_tracing=True)

app = FastAPI(
    title=settings.PROJECT_NAME,
    openapi_url=f"{settings.API_V1_STR}/openapi.json",
    generate_unique_id_function=custom_generate_unique_id,
)

app.add_middleware(
    CORSMiddleware,
    allow_origins=["http://localhost:3001"],  # Указываем точный адрес frontend
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.include_router(api_router, prefix=settings.API_V1_STR)

# main.py
from fastapi import Depends, HTTPException, Response, status
from sqlalchemy.orm import Session
from typing import List
from backend.app import models, schemas, crud
from backend.app.utils import ValveCalculator, CalculationError
from backend.app.dependencies import get_db
from fastapi import FastAPI

import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)


app = FastAPI(title="Valve Calculation API")


@app.get("/turbines/", response_model=List[schemas.TurbineInfo], summary="Получить все турбины")
async def get_all_turbines(db: Session = Depends(get_db)):
    """
    Получить список всех турбин.

    :param db: Сессия базы данных
    :return: Список всех турбин
    """
    try:
        turbines = db.query(models.Turbine).all()
        turbine_infos = [
            schemas.TurbineInfo(
                id=turbine.id,
                name=turbine.name
            ) for turbine in turbines
        ]
        return turbine_infos
    except Exception as e:
        logger.error(f"Ошибка при получении всех турбин: {e}")
        raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                            detail=f"Не удалось получить турбины: {e}")
И вот код страницы на фронтенде
import React, { useState, useEffect } from 'react';
import './TurbineSearch.css';

type Turbine = {
  id: number;
  name: string;
};

type Props = {
  onSelectTurbine: (turbine: Turbine) => void;
};

const TurbineSearch: React.FC<Props> = ({ onSelectTurbine }) => {
  const [turbines, setTurbines] = useState<Turbine[]>([]);
  const [searchTerm, setSearchTerm] = useState('');
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    const fetchTurbines = async () => {
      try {
        console.log("Отправляем запрос к API...");

        const response = await fetch('http://localhost:8000/turbines/');
        console.log("Статус ответа:", response.status);

        if (!response.ok) {
          throw new Error(`Ошибка загрузки данных. Статус: ${response.status}`);
        }

        const data = await response.json();
        console.log("Полученные данные:", data);
        setTurbines(data);
      } catch (error: any) {
        console.error("Ошибка запроса:", error);
        setError(error.message);
      } finally {
        setLoading(false);
      }
    };

    fetchTurbines();
  }, []);

  const filteredTurbines = turbines.filter(turbine =>
    turbine.name.toLowerCase().includes(searchTerm.toLowerCase())
  );

  if (loading) return <div>Загрузка турбин...</div>;
  if (error) return <div>Ошибка: {error}</div>;

  return (
    <div className="turbine-search">
      <h2 className="title">Введите название турбины</h2>
      <div className="search-bar">
        <input
          type="text"
          placeholder="A-100"
          value={searchTerm}
          onChange={(e) => setSearchTerm(e.target.value)}
          className="search-input"
        />
      </div>
      <ul className="turbine-list">
        {filteredTurbines.map((turbine) => (
          <li key={turbine.id} className="turbine-item" onClick={() => onSelectTurbine(turbine)}>
            <p className="turbine-name">{turbine.name}</p>
          </li>
        ))}
      </ul>
    </div>
  );
};

export default TurbineSearch;
В чем пробелма, как починить?