flask获取ip地址各种方法

一:使用request.remote_addr

python 复制代码
from flask import Flask,request

app=Flask(__name__)
@app.route("/")
def getIp():
    ip_address = request.remote_addr
    return f"{ip_address}"

if __name__=="__main__":
    app.run()

简单直观,但安全性不足,适合开发环境

二:使用X-Forwarded-For结合request.remote_addr

python 复制代码
from flask import Flask,request
app=Flask(__name__)
@app.route("/")
def getIp():
    ip_address=request.headers.get("X-Forwarded-For",request.remote_addr)
    return f"{ip_address}"

app.run()

代理环境下能获取真实ip,更可靠

三;使用proxyFix中间件配置可信代理(推荐)

python 复制代码
from flask import Flask,request
from werkzeug.middleware.proxy_fix import ProxyFix

app=Flask(__name__)
if hasattr(app.wsgi_app, 'trusted_proxies'):
    app.wsgi_app.trusted_proxies = ['192.168.0.100']#改成自己可信的代理地址
app.wsgi_app=ProxyFix(app.wsgi_app,x_for=1,x_proto=1,x_host=1,x_port=1)#配置代理

@app.route("/")
def getIp():
    ip_address=request.remote_addr
    return f"{ip_address}"

app.run()

这里使用Werkzeug的ProxyFix中间件提取来自X-Forwarded-For真实ip,适合生产环境

相关推荐
程序员爱钓鱼24 分钟前
Python编程实战 · 基础入门篇 | 第一个Python程序:Hello World
后端·python·编程语言
川石课堂软件测试1 小时前
CSS中常用的几种定位。
开发语言·css·python·网络协议·http·html·pytest
C.R.xing1 小时前
Pyspark分布式访问NebulaGraph图数据库
数据库·分布式·python·pyspark·nebulagraph
我是华为OD~HR~栗栗呀1 小时前
华为OD-21届考研-Java面经
java·前端·c++·python·华为od·华为·面试
松果集2 小时前
【2】数据结构·序列构成的数组
python
局外人LZ2 小时前
django rest framework:从零开始搭建RESTful API
python·django·restful·drf
㏕追忆似水年华あ2 小时前
逻辑600解析本03
python·flask
AndrewHZ2 小时前
【图像处理基石】遥感图像高度信息提取:Python实战全流程+常用库汇总
图像处理·人工智能·python·计算机视觉·cv·遥感图像·高程信息
盼哥PyAI实验室2 小时前
序列的力量——Python 内置方法的魔法解密
java·前端·python
Rhys..2 小时前
POM思想的理解与示例
前端·javascript·python·html·pom