📅  最后修改于: 2023-12-03 15:30:47.016000             🧑  作者: Mango
当使用Flask和Gunicorn搭建Web应用时,有时需要获取客户端的IP地址。这可以通过获取请求头中的X-Forwarded-For
字段来实现。
在Flask应用中,可以使用request
模块获取请求头中的X-Forwarded-For
字段。以下是一个简单的示例:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
# 获取客户端IP地址
ip = request.headers.get('X-Forwarded-For', request.remote_addr)
return f"你的IP地址是:{ip}"
if __name__ == '__main__':
app.run()
在这个示例中,我们先使用request.headers.get
方法从请求头中获取X-Forwarded-For
字段,如果不存在则使用request.remote_addr
方法获取客户端的IP地址。
在Gunicorn应用中,也可以使用类似的代码来获取客户端的IP地址。以下是一个简单的示例:
from flask import Flask, request
from werkzeug.contrib.fixers import ProxyFix
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
@app.route('/')
def index():
# 获取客户端IP地址
ip = request.headers.get('X-Forwarded-For', request.remote_addr)
return f"你的IP地址是:{ip}"
if __name__ == '__main__':
app.run()
在这个示例中,我们使用werkzeug.contrib.fixers.ProxyFix
中间件将请求头中的X-Forwarded-For
字段转换为request.remote_addr
方法可以使用的格式。
使用这种方法,我们可以轻松地获取客户端的IP地址,并在我们的应用中使用它来做一些有趣的事情。