我有一个在Windows Server 2016上运行的Fast API Web服务器(在poetry env shell中)。我试着从另一个服务器上攻击它,但是在同一个子网里。它超时了。但我可以在本地击中它。
同样,我正在运行一个Apache Web服务器python3 -m http.server 8000
,我可以成功地击中它。
为什么我能够访问简单的http.服务器而不是FastAPI(Uvicorn)服务器?
Windows Server 2016正在运行IIS。
我的FastAPI main.py
文件
from fastapi import FastAPI, APIRouter
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get('/')
def health():
return {
"Status": "Success",
"Message": "Server running"
}
启动命令-uvicorn main:app --reload --port 8000
。在一个诗歌环境shell中运行它。
1条答案
按热度按时间gg58donl1#
使用Uvicorn启动FastAPI服务器时,请检查Uvicorn绑定地址。默认情况下,Uvicorn绑定到127.0.0.1(localhost)。请确保它绑定到服务器的IP地址或0.0.0.0,以允许从其他计算机连接。
启动Uvicorn时,可以指定--host参数绑定到特定的IP地址。举例来说:
相似线程:How to access FastAPI backend from a different machine/IP on the same local network?