`

Server获取客户端IP 工具类:IPUtil

阅读更多

一 概述

 

    获取客户端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;
    }

}

 

分享到:
评论

相关推荐

    IP工具类,通过传入的request获取ip地址(JAVA)

    在IT行业中,尤其是在Web开发领域,获取客户端的IP地址是一项常见的任务。这有助于跟踪用户行为、提供地域针对性的服务,甚至进行安全防护。本篇文章将详细解释如何在Java环境下,通过Servlet和Reactive编程模型来...

    .net获取客户端IP,Mac地址

    在.NET开发环境中,获取客户端的IP地址和MAC地址是常见的需求,这主要涉及到网络通信和系统编程的相关知识。本文将详细讲解如何在.NET中实现这一功能,并提供相关的代码示例。 首先,我们要明白IP地址和MAC地址的...

    获取客户端IP地址所需Jar包

    在开发Web服务时,有时我们需要获取调用服务的客户端的IP地址,以便进行日志记录、权限控制或者地理位置分析等操作。"获取客户端IP地址所需Jar包"这个主题,主要涉及的是在使用Apache Axis框架发布Web服务时,如何...

    三菱FX5U PLC Modbus TCP协议服务器与客户端案例程序详解:含调试工具与通讯协议配置注解,三菱FX5U PLC的Modbus TCP协议服务器与客户端案例程序详解:包含调试工具、程序注解

    三菱FX5U PLC Modbus TCP协议服务器与客户端案例程序详解:含调试工具与通讯协议配置注解,三菱FX5U PLC的Modbus TCP协议服务器与客户端案例程序详解:包含调试工具、程序注解及通讯协议配置指南,三菱FX5U modbus tcp...

    PHP 获取客户端IP

    在这种情况下,可以尝试使用其他`$_SERVER`变量来获取真实的客户端IP: 1. `$_SERVER['HTTP_CLIENT_IP']`: 如果HTTP_X_FORWARDED_FOR头被设置,这个变量可能包含客户端IP。 2. `$_SERVER['HTTP_X_FORWARDED']`: ...

    sql server 网络客户端实用工具

    3. **SQL Server客户端连接组件**: 包括SQL Native Client、ODBC驱动程序和OLE DB提供程序,它们是客户端应用程序连接SQL Server的基础。这些组件支持不同的连接字符串语法,允许用户指定服务器名称、数据库、身份...

    ASPdotnet获得客户端的IP

    至于"网络信息采集发布工具V7.0最新版.exe",这可能是一个用于数据采集和发布的工具,可能与获取客户端IP地址无关,但可能需要集成到ASP.NET应用中,以实现自动化信息收集和发布功能。在实际开发中,这样的工具能够...

    一款免安装sqlserver客户端管理工具,好用

    标题中的“一款免安装sqlserver客户端管理工具,好用”指的是SqlDbxPersonal,这是一款专为SQL Server设计的轻量级、无需安装的数据库管理工具。它允许用户方便地进行SQL查询、数据库管理和开发工作,而无需经历传统...

    客户端IP修改.zip

    在IT行业中,客户端IP修改是一个涉及网络连接和游戏服务器配置的高级话题。在这个场景中,我们关注的是"奇迹S9"这款游戏的客户端设置。"ServerInfo.bmd"文件是游戏客户端与服务器通信的关键组成部分,它包含了服务器...

    zookeeper客户端连接工具: zktools

    zktools是针对ZooKeeper开发的一款客户端连接工具,它使得与ZooKeeper交互变得更加便捷和高效。这款工具通常包含了一些实用的功能,如查看ZNode(ZooKeeper中的数据节点)信息,执行数据操作,监控会话状态,以及...

    IpUtils工具包 获取客户端IP 将IPv4地址转换成字节

    获取客户端IP 将IPv4地址转换成字节 获取主机名 从多级反向代理中获得第一个非unknown IP地址 检测参数是否在ip通配符里 校验ip是否符合过滤串规则

    SQL SERVER 2008 客户端

    SQL Server 2008 客户端是微软公司推出的一款数据库管理系统的客户端工具,它为用户提供了与SQL Server交互的界面和功能。这个轻量级的客户端版本无需完整安装,只需解压缩即可使用,极大地简化了部署过程,提高了...

    SQL+server+客户端网络实用工具独立包

    SQL Server 客户端网络实用工具独立包是一个包含了一系列用于管理和诊断SQL Server网络连接的工具集合。这个包对于SQL Server数据库管理员来说极其重要,因为它提供了对数据库服务器远程访问的配置和故障排查能力。...

    SQL Server客户端工具(WPF,开源)

    【SQL Server客户端工具】是一个基于WPF(Windows Presentation Foundation)技术开发的应用程序,专为管理和操作SQL Server数据库设计。此工具由VS2010(Visual Studio 2010)构建,它提供了全面的功能,使得用户...

    雄迈客户端及修改IP工具

    【雄迈客户端及修改IP工具】是针对雄迈品牌监控设备的一款综合管理软件,它集成了设备连接、视频查看、录像回放、IP地址修改等多种功能。在IT领域,这样的工具对于网络监控系统的管理和维护至关重要,尤其对于拥有...

    sql server客户端安装包

    SQL Server客户端安装包是用于与Microsoft SQL Server进行交互的软件组件集合,它包含了连接到SQL Server、执行查询、管理数据库以及进行数据导入导出等任务所需的工具。在本压缩包中,主要包含了一个名为"SQL ...

    C#代码:获得链接到WCF服务的WPF客户端的IP地址

    客户端通过引用服务的元数据(通常使用svcutil工具生成)来创建代理类,然后实例化这个代理并调用其方法。 要获取WCF客户端的IP地址,我们需要在服务端捕获请求上下文。在WCF中,`OperationContext`类提供了对当前...

    java各种工具类:精确的数学运算、将String进行base64编码解码、树的递归、判断是否为空等

    java各种工具类:精确的数学运算、将String进行base64编码解码、树的递归等 包含:ArithmeticUtils、Base64Util、BitConverterUtil、BuildTreeFor1077、CaculateDistanceUtil、CloseUtil、ConvertUtil、...

    64位sqlserver数据库客户端工具SQLManagementStudio_x64_CHS

    《64位SQL Server数据库客户端工具SQL Management Studio详解》 SQL Server Management Studio(简称SSMS)是Microsoft开发的一款强大的数据库管理工具,专为64位操作系统设计,用于管理和配置SQL Server环境。它...

Global site tag (gtag.js) - Google Analytics