@chetwell

Как сделать так, чтобы любой пользователь мог обращаться к моему API?

Мой проект - форум, ранее я уже пытался открыть к нему доступ, но не вышло.
При попытке запроса с любого устройства подключенного к моему 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 моего компьютера в сети.
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@Drno
Внешний ip есть? Проброс портов сделан? Видмо нет… проблема не в питоне, а в сетевых настройках
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы