django获取客户端真实IP
2019独角兽企业重金招聘Python工程师标准>>>
1settings.py中 添加中间件:
'django.middleware.http.SetRemoteAddrFromForwardedFor'
如何没有 自己写这个中间件:
classSetRemoteAddrFromForwardedFor(object):defprocess_request(self,request):try:real_ip=request.META['HTTP_X_FORWARDED_FOR']exceptKeyError:passelse:#HTTP_X_FORWARDED_FOR can be a comma-separated list of IPs.#Take just the first one.real_ip=real_ip.split(",")[0]request.META['REMOTE_ADDR']=real_ip
引入中间件:
‘your_project.http.SetRemoteAddrFromForwardedFor’,
原因:
高流量的站点通常需要将Django部署在负载平衡proxy(参见第20章)之后。
这种方式将带来一些复杂性,其一就是每个request中的远程IP地址(request.META["REMOTE_IP"])将指向该负载平衡proxy,
而不是发起这个request的实际IP。
负载平衡proxy处理这个问题的方法在特殊的 X-Forwarded-For 中设置实际发起请求的IP。
因此,需要一个中间件来确保运行在proxy之后的站点也能在request.META['REMOTE_ADDR']中得到正确的IP。
转载于:https://my.oschina.net/jamescasta/blog/1527335
django获取客户端真实IP相关推荐
- 获取客户端真实IP地址
Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...
- Java正确获取客户端真实IP方法整理
转载自 干货:Java正确获取客户端真实IP方法整理 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apach ...
- vue获取url中ip_Kubernetes 集群中这样获取客户端真实 IP
Kubernetes 依靠 kube-proxy 组件实现 Service 的通信与负载均衡.在这个过程中,由于使用了 SNAT 对源地址进行了转换,导致 Pod 中的服务拿不到真实的客户端 IP 地 ...
- 获取客户端真实 IP
Tomcat + Nginx 反向代理获取客户端真实IP.域名.协议.端口 Nginx 反向代理后,Servlet 应用通过 request.getRemoteAddr() 取到的 IP 是 Ngin ...
- 获取客户端真实ip的方法
为什么需要获取客户端真实ip ip地址是按地域分布的,服务器获取到客户端ip后可以做流量统计和分析,服务器也可以针对客户端ip做一些定制化的功能,比如限流和黑白名单. 网络环境十分复杂,客户端发出的一 ...
- 获取客户端真实IP方法
2019独角兽企业重金招聘Python工程师标准>>> 我们经常会记录审计日志,那么如何获取客户端真实IP呢?让我们了解一下HTTP协议头吧. 在讨论获取客户端IP 地址前,我们首先 ...
- 如何获取客户端真实 IP?从 Gin 的一个 Bug 说起
1. 背景 请求 IP 作为用户的身份标识属性之一,是一种非常重要的基础数据.在很多场景下,我们会基于客户端请求 IP 去做网络安全攻击防范或访问风险控制.通常我们可以通过 HTTP 协议 Reque ...
- PHP获取客户端真实IP地址的方法
php获取客户端IP地址有四种方法,这五种方法分别为 1 2 3 4 REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_VIA REMOTE_A ...
- asp.net如何获取客户端真实IP地址
目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAddress = (HttpContext.Curren ...
最新文章
- 先进机器人系统中的关键技术
- 求主析取范式与主合取范式
- 一个关于js所有函数都报错的问题
- 好程序员web前端分享函数作用域及递归
- Colaboratory:手把手教你使用Google免费的云端IDE进行深度学习(免费的GPU加速)的详细攻略
- 数据库开发——MySQL——基本操作
- leetcode66. 加一
- OWASP Top 10关键点记录
- rabbitmq消息确认机制及死信队列的使用
- 谷歌紧急修复已遭利用的新 0day
- 21天Jenkins打卡Day15项目复制
- git中fatal: Authentication failed的问题 git不能clone
- 【Win 10应用开发】分阶段进行数据绑定
- 虚拟助手之争,智能音箱能否挑战智能手机?
- Mosquitto PHP 插件安装使用及中文手册
- java jsp传值乱码_关于JSP乱码问题(页面传值产生的乱码)
- 【实地测试】新疆塔克拉玛干沙漠进行实地通信测试
- iOS制作微信(weChat)支付SDK过程
- GCKontrol与嵌入式系统:STM32实现电机控制案例
- 恢复出厂设置和格式化SD卡
热门文章
- 递归和函数栈与setjmp和longjmp的关系
- 列举5个python内置函数_Python5个内建高阶函数的使用
- 【 NLS 】Newton – Raphson Iteration Procedure of TOA - Based Positioning
- JavaScript的使用
- 使用AndroidStudio编译NDK的方法及错误解决方案
- 如何搭建自己的 pip 本地 cache
- 杨兴平离职完全是意料之中
- 详细讲解SQL Server索引的性能问题
- java 扩展类加载器_java实现自定义类加载器
- python 语料标注_在python中怎么标记文本?