使用Flask获取访问者的IP地址
12 个回答
97
其实,你会发现,当你简单地获取以下内容时,就能得到服务器的地址:
request.remote_addr
如果你想要获取客户端的IP地址,那么可以使用以下内容:
request.environ['REMOTE_ADDR']
134
使用代理的时候可能会有点麻烦,所以如果你在用代理的话,记得看看ProxyFix和Flask的文档。你可以查看一下你环境中的request.environ
。在使用nginx的时候,我有时会这样做:
from flask import request
request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
当像nginx这样的代理转发地址时,它们通常会在请求的头信息中包含原始的IP地址。
更新 查看flask-security的实现。再次提醒,在实施之前,先查看关于ProxyFix的文档。你的解决方案可能会根据你具体的环境有所不同。
433
查看文档了解如何访问请求对象,接着从这个请求对象中获取一个叫 remote_addr
的属性。
代码示例
from flask import request
from flask import jsonify
@app.route("/get_my_ip", methods=["GET"])
def get_my_ip():
return jsonify({'ip': request.remote_addr}), 200
想要了解更多信息,可以查看 Werkzeug 的文档。