一 概述
获取客户端Ip工具类,支持client 和 server之间有代理的情况
二 代码
import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; /** * 获取client ip */ public class IpUtil { private static final String[] CONTAINS_IP_HEADERS = { "X-Forwarded-For" , "Proxy-Client-IP" , "WL-Proxy-Client-IP" , "HTTP_CLIENT_IP" , "HTTP_X_FORWARDED_FOR" , "HTTP_X_FORWARDED" , "HTTP_X_CLUSTER_CLIENT_IP" , "HTTP_FORWARDED_FOR" , "HTTP_FORWARDED" ,"HTTP_VIA" ,"REMOTE_ADDR"}; /** * 获取client ip * @param request http 请求 * @return client ip (ipv4 或ipv6) */ public static String getClientIp(HttpServletRequest request) { String clientIp = getIpFromHttpHeader(request); if (StringUtils.isNotEmpty(clientIp)) { return clientIp; } return request.getRemoteAddr(); } //从http头获取ip 用于优先支持有proxy的情况 private static String getIpFromHttpHeader(HttpServletRequest request) { for (String header : CONTAINS_IP_HEADERS) { String clientIps = request.getHeader(header); if (StringUtils.isEmpty(clientIps)) { continue; } if (StringUtils.equalsIgnoreCase("unknown", clientIps)) { continue; } //根据代理协议,取第一为客户端ip if (!StringUtils.contains(clientIps, ",")) { return clientIps; } String[] ips = StringUtils.split(clientIps, ','); return ips[0]; } return null; } }
相关推荐
在.NET开发环境中,获取客户端的IP地址和MAC地址是常见的需求,这主要涉及到网络通信和系统编程的相关知识。本文将详细讲解如何在.NET中实现这一功能,并提供相关的代码示例。 首先,我们要明白IP地址和MAC地址的...
在开发Web服务时,有时我们需要获取调用服务的客户端的IP地址,以便进行日志记录、权限控制或者地理位置分析等操作。"获取客户端IP地址所需Jar包"这个主题,主要涉及的是在使用Apache Axis框架发布Web服务时,如何...
SQL Server客户端连接工具是数据库管理员和开发人员用来与Microsoft SQL Server进行交互的重要工具。它提供了图形用户界面(GUI)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...
java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java ...
在JavaScript中,获取客户端IP地址和MAC地址是一个相对复杂的过程,因为JavaScript的浏览器安全限制不允许直接访问客户端的MAC地址。然而,我们可以通过一些间接的方法来获取客户端的IP地址。在这个场景下,`...
zktools是针对ZooKeeper开发的一款客户端连接工具,它使得与ZooKeeper交互变得更加便捷和高效。这款工具通常包含了一些实用的功能,如查看ZNode(ZooKeeper中的数据节点)信息,执行数据操作,监控会话状态,以及...
获取客户端IP 将IPv4地址转换成字节 获取主机名 从多级反向代理中获得第一个非unknown IP地址 检测参数是否在ip通配符里 校验ip是否符合过滤串规则
标题提到的“方便好用Ms SqlServer客户端管理工具”正是这样一款软件,它具备简洁的界面设计和易于上手的操作流程,使得用户可以轻松地管理和监控多个Ms SqlServer服务器。 首先,让我们关注一下描述中提及的关键...
SQL Server 客户端网络实用工具独立包是一个包含了一系列用于管理和诊断SQL Server网络连接的工具集合。这个包对于SQL Server数据库管理员来说极其重要,因为它提供了对数据库服务器远程访问的配置和故障排查能力。...
SQL Server客户端连接工具是数据库管理员和开发人员用来与SQL Server交互的重要工具。在这个"SQL Server客户端连接工具(免安装)"的压缩包中,提供了一种无需完整安装即可使用的轻量级解决方案,对于那些不希望在系统...
【雄迈客户端及修改IP工具】是针对雄迈品牌监控设备的一款综合管理软件,它集成了设备连接、视频查看、录像回放、IP地址修改等多种功能。在IT领域,这样的工具对于网络监控系统的管理和维护至关重要,尤其对于拥有...
SQL Server客户端安装包是用于与Microsoft SQL Server进行交互的软件组件集合,它包含了连接到SQL Server、执行查询、管理数据库以及进行数据导入导出等任务所需的工具。在本压缩包中,主要包含了一个名为"SQL ...
SQL Server连接工具是数据库管理员和开发人员用于与Microsoft SQL Server交互的重要软件。这些工具提供了多种功能,包括数据库的创建、管理、查询、备份、恢复以及性能优化等。在本篇文章中,我们将深入探讨SQL ...
客户端通过引用服务的元数据(通常使用svcutil工具生成)来创建代理类,然后实例化这个代理并调用其方法。 要获取WCF客户端的IP地址,我们需要在服务端捕获请求上下文。在WCF中,`OperationContext`类提供了对当前...
java各种工具类:精确的数学运算、将String进行base64编码解码、树的递归等 包含:ArithmeticUtils、Base64Util、BitConverterUtil、BuildTreeFor1077、CaculateDistanceUtil、CloseUtil、ConvertUtil、...
ISCSI(Internet Small Computer System Interface)是一种网络存储技术,它将SCSI协议封装在TCP/IP协议上,使得存储设备可以通过IP网络进行传输和访问。在本案例中,我们讨论的是微软提供的ISCSI客户端软件——...
1. `$_SERVER['REMOTE_ADDR']`:这个常用来获取客户端的IP地址。然而,如果用户通过代理服务器访问,可能获取到的是代理服务器的IP,而非真实用户的IP。为获取真实IP,可以使用`$_SERVER['HTTP_X_FORWARDED_FOR']`,...
5. **客户端设置**:在路由器B下的笔记本电脑上,安装SQL Server 2005的客户端工具,如SQL Server Management Studio Express,用于远程连接。创建服务器别名,如“test”,指定服务器地址192.168.1.121,并选择TCP/...
"OPC-Server模拟器服务端" 是一个用于测试和开发的工具,它模拟了一个真实的OPC UA服务器。这种模拟器可以创建虚拟的数据源,生成各种模拟的工业数据,如温度、压力等,以便开发者在没有实际设备的情况下进行应用的...
通过"一件获取本机IP、主机名、和Mac地址小工具",用户可以快速获取这些信息,对网络状态进行监控和诊断。对于IT专业人士来说,理解和掌握这些基础知识至关重要,因为它直接关系到网络的正常运行和问题排查。