博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写获取真实IP的工具类
阅读量:7048 次
发布时间:2019-06-28

本文共 991 字,大约阅读时间需要 3 分钟。

  hot3.png

今天看到一段代码
public static String getIpAddr(HttpServletRequest request) {        String ip = request.getHeader("x-forwarded-for");        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getHeader("Proxy-Client-IP");        }        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getHeader("WL-Proxy-Client-IP");        }        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getRemoteAddr();        }        return ip;    }
在apache+WebLogic整合系统中,apache会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串Ip值,究竟哪个才是真正的用户端的真实IP呢?答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。

然后学习了一下,X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。一般格式为:

X-Forwarded-For: client1, proxy1, proxy2

=============================

学习了,以后自己多看看

转载于:https://my.oschina.net/Kaidy/blog/92430

你可能感兴趣的文章
业务配置开发平台qMISPlat 2.0 产品介绍
查看>>
org.dom4j.DocumentException:对实体 "virtual_card_id" 的引用必须以 ';' 分隔符结尾
查看>>
【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式
查看>>
linux内核剖析(七)Linux进程间通信的几种方式总结
查看>>
180510.最近踩过和听过的sql的坑
查看>>
api 25 PopupWindow会占据整个屏幕
查看>>
Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
查看>>
Android GreenDao操作外部DB数据库文件
查看>>
spring 邮件服务
查看>>
饿了么多活利器:实时双向复制工具(DRC)
查看>>
SpringBoot各类扩展点详解
查看>>
NancyFx-打造小型 WebAPI 與 Microservice 的輕巧利器
查看>>
为什么使用Reazor
查看>>
使用intellij idea打包并部署到外部的tomcat
查看>>
jz2440存储管理实验【学习笔记】
查看>>
SQL Server 关于列的权限控制
查看>>
springboot - Constructor、@Autowired、@PostConstruct分析
查看>>
InnoDB recovery过程解析
查看>>
WPF 中动态创建和删除控件
查看>>
springboot+mysql实现quartz集群搭建
查看>>