2024-04-29 09:26:06 发布
网友
我正在创建一个用户可以登录并下载文件的网站,使用的是使用Python(在我的例子中是2.6)的Flask micro-framework(基于Werkzeug)。
我需要获取用户登录时的IP地址(用于登录目的)。 有人知道怎么做吗?当然有办法用Python来实现吗?
代理可能会使这变得有点棘手,如果您正在使用代理,请确保签出ProxyFix(Flask docs)。在您的特定环境中查看request.environ。有了nginx,我有时会这样做:
request.environ
from flask import request request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
当代理(如nginx)转发地址时,它们通常会在请求头的某个位置包含原始IP。
更新See the flask-security implementation。同样,在实现之前,请查看有关ProxyFix的文档。您的解决方案可能因您的特定环境而异。
实际上,您会发现,当简单地获取以下内容时,将获得服务器的地址:
request.remote_addr
如果需要客户端的IP地址,请使用以下地址:
request.environ['REMOTE_ADDR']
请参阅有关how to access the Request object的文档,然后从同一个请求对象获取属性remote_addr。
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 documentation。
代理可能会使这变得有点棘手,如果您正在使用代理,请确保签出ProxyFix(Flask docs)。在您的特定环境中查看
request.environ
。有了nginx,我有时会这样做:当代理(如nginx)转发地址时,它们通常会在请求头的某个位置包含原始IP。
更新See the flask-security implementation。同样,在实现之前,请查看有关ProxyFix的文档。您的解决方案可能因您的特定环境而异。
实际上,您会发现,当简单地获取以下内容时,将获得服务器的地址:
如果需要客户端的IP地址,请使用以下地址:
请参阅有关how to access the Request object的文档,然后从同一个请求对象获取属性
remote_addr
。代码示例
有关详细信息,请参见Werkzeug documentation。
相关问题 更多 >
编程相关推荐