一 概述
获取客户端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)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...
在这种情况下,可以尝试使用其他`$_SERVER`变量来获取真实的客户端IP: 1. `$_SERVER['HTTP_CLIENT_IP']`: 如果HTTP_X_FORWARDED_FOR头被设置,这个变量可能包含客户端IP。 2. `$_SERVER['HTTP_X_FORWARDED']`: ...
3. **SQL Server客户端连接组件**: 包括SQL Native Client、ODBC驱动程序和OLE DB提供程序,它们是客户端应用程序连接SQL Server的基础。这些组件支持不同的连接字符串语法,允许用户指定服务器名称、数据库、身份...
java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java Tcp 客户端工具类java Tcp 客户端工具类 java ...
至于"网络信息采集发布工具V7.0最新版.exe",这可能是一个用于数据采集和发布的工具,可能与获取客户端IP地址无关,但可能需要集成到ASP.NET应用中,以实现自动化信息收集和发布功能。在实际开发中,这样的工具能够...
标题中的“一款免安装sqlserver客户端管理工具,好用”指的是SqlDbxPersonal,这是一款专为SQL Server设计的轻量级、无需安装的数据库管理工具。它允许用户方便地进行SQL查询、数据库管理和开发工作,而无需经历传统...
zktools是针对ZooKeeper开发的一款客户端连接工具,它使得与ZooKeeper交互变得更加便捷和高效。这款工具通常包含了一些实用的功能,如查看ZNode(ZooKeeper中的数据节点)信息,执行数据操作,监控会话状态,以及...
获取客户端IP 将IPv4地址转换成字节 获取主机名 从多级反向代理中获得第一个非unknown IP地址 检测参数是否在ip通配符里 校验ip是否符合过滤串规则
SQL Server 客户端网络实用工具独立包是一个包含了一系列用于管理和诊断SQL Server网络连接的工具集合。这个包对于SQL Server数据库管理员来说极其重要,因为它提供了对数据库服务器远程访问的配置和故障排查能力。...
SQL Server连接工具是数据库管理员和开发人员用于与Microsoft SQL Server交互的重要软件。这些工具提供了多种功能,包括数据库的创建、管理、查询、备份、恢复以及性能优化等。在本篇文章中,我们将深入探讨SQL ...
客户端通过引用服务的元数据(通常使用svcutil工具生成)来创建代理类,然后实例化这个代理并调用其方法。 要获取WCF客户端的IP地址,我们需要在服务端捕获请求上下文。在WCF中,`OperationContext`类提供了对当前...
OPC Server是实现这一标准的关键组件,它提供了与设备或系统的连接,而OPC客户端则通过OPC Server获取或写入数据。在开发和调试OPC客户端程序时,一个可靠的OPC Server仿真模拟器是必不可少的工具。 标题提到的...
《64位SQL Server数据库客户端工具SQL Management Studio详解》 SQL Server Management Studio(简称SSMS)是Microsoft开发的一款强大的数据库管理工具,专为64位操作系统设计,用于管理和配置SQL Server环境。它...
本篇文章将详细探讨如何在Delphi 7中实现获取客户端的外网IP。 首先,我们需要了解IP地址的类型。IP地址分为两种:内网IP(也称为私有IP)和外网IP(也称为公共IP)。内网IP是局域网内部设备使用的地址,如192.168....
ISCSI(Internet Small Computer System Interface)是一种网络存储技术,它将SCSI协议封装在TCP/IP协议上,使得存储设备可以通过IP网络进行传输和访问。在本案例中,我们讨论的是微软提供的ISCSI客户端软件——...
SQL server数据库测试链接工具
61850-server客户端软件是一款专为电力系统设计的工具,主要用于实现对IEC 61850标准的遵从和可视化操作。该软件的核心功能是自动连接本地的61850服务器,使用户能够便捷地查看和分析ICD(IED Configuration ...
通过"一件获取本机IP、主机名、和Mac地址小工具",用户可以快速获取这些信息,对网络状态进行监控和诊断。对于IT专业人士来说,理解和掌握这些基础知识至关重要,因为它直接关系到网络的正常运行和问题排查。