Мой проект - форум, ранее я уже пытался открыть к нему доступ, но не вышло.
При попытке запроса с любого устройства подключенного к моему Wi-Fi запросы проходят удачно, но когда я пытаюсь сделать это через мобильный интернет или прошу друзей провести запрос, то получаю ошибку о том, что от сервера не удалось получить корректный ответ за отведенное на это время (если совсем отключить АПИ то ошибка другая).
Вот код (ради краткости я удалил роутеры):
import uvicorn
from fastapi import FastAPI, Request
from contextlib import asynccontextmanager
from database.models import create_tables
from interface import Databaseinterface
from database.view import (UserCreate, UsersPhotosView, Usersfeedbackview, Articlesview, Articlesfeedbackview,
QuestionView, AskesView, AskfeedbackView, Usersview, EditUsernick, EditObjectText,
EditUserPassword)
from fastapi.responses import JSONResponse, Response
from typing import Union
from fastapi.middleware.cors import CORSMiddleware
@asynccontextmanager
async def lifespan(app: FastAPI):
create_tables()
yield
app = FastAPI(
title="ORM Test",
version="1.0.0",
lifespan=lifespan
)
# Настройка CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Разрешить доступ всем источникам
allow_credentials=True,
allow_methods=["*"], # Разрешить все методы (GET, POST и т.д.)
allow_headers=["*"], # Разрешить все заголовки
)
# @app.middleware("http")
# async def add_cors_headers(request: Request, call_next):
# response: Response = await call_next(request)
# response.headers["Access-Control-Allow-Origin"] = "*"
# response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
# response.headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization"
# response.headers["Access-Control-Allow-Credentials"] = "true"
# return response
#
# @app.options("/{rest_of_path:path}")
# async def preflight_handler(rest_of_path: str):
# response = Response()
# response.headers["Access-Control-Allow-Origin"] = "*"
# response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
# response.headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization"
# response.headers["Access-Control-Allow-Credentials"] = "true"
# return response
# if __name__ == "__main__":
# uvicorn.run(app)
if __name__ == "__main__":
uvicorn.run("main:app", host="localhost", port=2121, reload=True)
При запуске я меняю хост на IP моего компьютера в сети.