FastAPI(starlette)获取客户端真实IP

问题描述 投票:0回答:1

我在FastAPI上有一个API,当他请求我的页面时,我需要获取客户端的真实IP地址。

我很喜欢使用starlette请求。但是它返回我的服务器IP,而不是客户端远程IP。

我的代码:

@app.post('/my-endpoint')
async def my_endpoint(stats: Stats, request: Request):
    ip = request.client.host
    print(ip)
    return {'status': 1, 'message': 'ok'}

我做错了什么?如何获取真实IP(例如在Flask request.remote_addr中)?

python fastapi x-forwarded-for starlette
1个回答
0
投票

[request.client应该可以工作,除非您在代理(例如nginx)之后运行,请使用uvicorn的--proxy-headers标志接受这些传入的标头并确保代理转发它们。

© www.soinside.com 2019 - 2024. All rights reserved.