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