`

获取客户端IP(外网)地址的方法:

    博客分类:
  • JAVA
 
阅读更多

/**
     * 获取访问者IP
     *
     * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
     *
     * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
     * 如果还不存在则调用Request .getRemoteAddr()。
     *
     * @param req 请求
     * @return IP地址
     */
    public static String ip(HttpServletRequest req) {
        String ip = head(req,"X-Real-IP");
        if (ip!=null && !"unknown".equalsIgnoreCase(ip)) {
            return ip;
        }
        ip = head(req,"X-Forwarded-For");
        if (ip!=null && !"unknown".equalsIgnoreCase(ip)) {
            // 多次反向代理后会有多个IP值,第一个为真实IP。
            int index = ip.indexOf(',');
            return (index!=-1)?ip.substring(0,index):ip;
        } else {
            return req.getRemoteAddr();
        }
    }



分享到:
评论

相关推荐

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

    在.NET中,获取客户端IP地址通常通过HTTP请求的上下文来实现。当客户端发起请求时,服务器端可以通过以下方法获取: ```csharp using System.Net; // 获取客户端IP public string GetClientIP(HttpRequest request...

    .net获取客户端主机名和ip地址

    本文将详细介绍几种在.NET环境中获取客户端主机名和IP地址的方法。 #### 一、ASP.NET内置对象获取 在ASP.NET中,可以利用内置对象来获取客户端的信息。主要包括以下几种方法: 1. **Page.Server.MachineName**:...

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

    在Axis中获取客户端IP地址,除了使用基本的Servlet API方法外,还需要考虑到服务部署环境可能存在的反向代理和负载均衡。可以使用以下步骤: 1. 首先尝试从HttpServletRequest的`getHeader("X-Forwarded-For")`获取...

    C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析

    本文实例讲述了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法。分享给大家供大家参考,具体如下: 1、获取本机的IP地址集合: /// /// 获取本机所有ip地址 /// /// <param name=netType>InterNetwork:...

    Delphi 7 获取外网IP

    本篇文章将详细探讨如何在Delphi 7中实现获取客户端的外网IP。 首先,我们需要了解IP地址的类型。IP地址分为两种:内网IP(也称为私有IP)和外网IP(也称为公共IP)。内网IP是局域网内部设备使用的地址,如192.168....

    Python简单获取自身外网IP的方法

    在互联网应用开发中,获取客户端或服务器的外网IP地址是一项常见的需求。这不仅对于网络安全管理至关重要,还能帮助开发者实现地理位置定位、访问控制等高级功能。本文将详细介绍如何使用Python语言通过第三方平台...

    获取客户端外网ip和ip定位修订版

    这篇文章是对上篇文章获取外网ip和ip定位的修订版,上篇文章中得到的外网ip是服务器端的外网ip,而不是客户端的外网ip,此篇文章进行修改,得到客户端的外网ip和根据ip定位,上篇文章给大家带来的不便,请谅解。

    易语言获取外网ip5种方法

    本篇文章将详细介绍如何使用易语言获取外网IP的五种方法,旨在帮助易语言学习者增强网络编程能力。 1. **HTTP请求获取** 通过发送HTTP GET请求到提供公网IP查询服务的网站,如`http://checkip.dyndns.org`,解析...

    Flex通过web返回客户端IP

    在Flex中,要获取客户端IP,通常需要借助Web服务。Web服务端需要处理请求并返回客户端的IP信息。在服务器端,这可以通过访问HTTP请求头中的`X-Forwarded-For`或者`Remote-Addr`字段来实现,这些字段通常包含了...

    获取路由器外网IP

    在IT领域,获取路由器外网IP是一个常见的需求,特别是在网络编程和远程访问系统中。Delphi是一种强大的面向对象的编程语言,它提供了丰富的库和组件,使得开发这样的功能变得相对简单。下面我们将深入探讨如何使用...

    C++获得本机外网ip

    ### C++ 获取本机外网IP地址方法解析 在计算机网络中,获取本机的外网IP地址是一项常见的需求,特别是在开发需要与互联网交互的应用程序时。本文将深入探讨一个具体的实现方法,该方法通过调用HTTP服务来获取当前...

    asp.net获取客户端的MAC地址

    在实际应用中,这种方法并不适用于获取客户端的MAC地址,因为它依赖于客户端操作系统直接响应网络查询,而这在大多数现代网络环境中是不可行的。 因此,如果你需要在ASP.NET中实现防刷票或其他基于客户端硬件标识的...

    e语言-5种获取外网IP方法

    本文将深入探讨标题为“e语言-5种获取外网IP方法”的主题,通过源码分析,揭示如何使用易语言实现获取互联网公共IP地址的多种技术。 1. HTTP GET请求获取IP HTTP GET是HTTP协议中最常见的请求方法之一,用于从...

    js获取客户端ip的简单实例

    总结来说,获取客户端IP地址的方法多种多样,有的方法依赖特定浏览器技术,有的则依赖第三方服务。由于安全性和隐私保护的原因,浏览器限制了获取用户真实IP地址的能力,因此开发者在处理IP地址相关功能时需要考虑到...

    c#中获取服务器IP

    除了以上方法外,还有一些更高级的方法可以获取IP地址,例如通过执行系统命令来获取客户端的MAC地址。 #### 1. 获取客户端MAC地址 ```csharp public string GetMac(string ip) { string dirResults = ""; Process...

    js获取客户端外网ip的简单实例

    var wwip=; $(function(){ $(document).ready( function() { $.getJSON( http://smart-ip.net/geoip-json?callback=?, function(data){ ...例子,js获取本地与外网IP地址。 <script language=

    C# 获取电脑外网IP的源码

    本文将详细讲解如何使用C#语言获取电脑的外网IP地址,以及解析提供的源码。 首先,我们需要理解“外网IP”与“内网IP”的区别。内网IP(也称为私有IP)是局域网内部分配给每台设备的IP,而外网IP(公有IP)则是...

    js获取本机的外网/广域网ip地址完整

    本文将详细讲解如何使用JavaScript获取用户外网或广域网的IP地址。 首先,我们要明白,由于浏览器的安全限制,JavaScript在本地环境下无法直接获取到用户的IP地址,它只能通过向服务器发送请求,由服务器返回用户的...

    PHP 获取客户端真实IP地址多种方法小结

    `$_SERVER['REMOTE_ADDR']` 是最基础的获取客户端IP的方法,它返回的是服务器接收到的TCP/IP连接的远程地址。如果用户直接访问,通常能获取到真实的外网IP。但当用户通过代理服务器或者NAT设备访问时,`REMOTE_ADDR...

Global site tag (gtag.js) - Google Analytics