Java 获取客户端IP

这篇具有很好参考价值的文章主要介绍了Java 获取客户端IP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法一

 public static String getIp2(HttpServletRequest request) {
        String ip = request.getHeader("X-Forwarded-For");
        if(StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)){
            //多次反向代理后会有多个ip值,第一个ip才是真实ip
            int index = ip.indexOf(",");
            if(index != -1){
                return ip.substring(0,index);
            }else{
                return ip;
            }
        }
        ip = request.getHeader("X-Real-IP");
        if(StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)){
            return ip;
        }
        return request.getRemoteAddr();
    }

方法二

 

public static String getClinetIP(HttpServletRequest request){
        String ip = null;
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
            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.getHeader("entrust-client-ip");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
            ip = request.getRemoteAddr();
            if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip.trim())){
                InetAddress inetAddress = null;
                try{
                    inetAddress =InetAddress.getLocalHost();
                }catch (UnknownHostException e){
                    System.out.println("获取IP地址失败");
                }
                ip = inetAddress.getHostAddress();
            }
        }
        //多级 方向代理
        if (ip.indexOf(",")>0){
            ip = ip.substring(0,ip.indexOf(",")).trim();
        }
        
        return ip;
    }

ps:代码引用于
JAVA获取客户端IP地址-CSDN博客https://blog.csdn.net/m0_71867302/article/details/129683061?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170738691916800226562378%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170738691916800226562378&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-129683061-null-null.142^v99^pc_search_result_base6&utm_term=java%E8%8E%B7%E5%8F%96%E5%AE%A2%E6%88%B7%E7%AB%AFip%E5%9C%B0%E5%9D%80&spm=1018.2226.3001.4187

问题:当项目中用到Nginx转发的时候,获取ip的时候会获取异常、

在Nginx中加入以下配置:
  1. proxy_set_header X-Real-IP $remote_addr;

  2. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;文章来源地址https://www.toymoban.com/news/detail-834578.html

到了这里,关于Java 获取客户端IP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java开发】之获取客户端真实 IP 地址

    在投票系统开发中,为了防止刷票,我们需要限制每个 IP 地址只能投票一次; 当网站受到诸如 DDoS(Distributed Denial of Service,分布式拒绝服务攻击)等攻击时,我们需要快速定位攻击者 IP; 在渗透测试过程中,经常会碰到网站有 CDN(Content Distribution Network,内容交付网络),

    2024年02月04日
    浏览(48)
  • Java之获取Nginx代理之后的客户端IP

    Nginx 代理接口之后,后台获取的IP地址都是127.0.0.1, 解决办法是需要配置Nginx搭配后台获取的方法,获得设备的真实地址 。我们想要获取的就是nginx代理日志中的这个IP 首先在nginx代理的对应location增加如下配置 示例 获取客户端IP地址工具类 这样就可以通过代码获取到客户端

    2024年02月21日
    浏览(39)
  • Java后台获取客户端ip与服务器ip的方法

    1.可以用 RestTemplate 发送http请求

    2024年02月11日
    浏览(39)
  • Java编程技巧:获取ip地址、通过ip获取地理位置、获取客户端操作系统、获取客户端浏览器、获取主机名、获取操作系统、获取系统架构

    说明: 大家直接去对应项目位置找到代码,然后看着复制就行了 1.1、若依(自己写的代码) 项目:https://gitee.com/y_project/RuoYi 子模块:ruoyi-common 所在类:com.ruoyi.common.utils.IpUtils 所在方法:getIpAddr 详细位置:整个方法 1.2、Snowy(借助hutool工具包) 项目:https://gitee.com/xiaonuo

    2024年02月04日
    浏览(128)
  • 叫你如何获取客户端IP和MAC地址的工具类,实战篇(Java版)

    在开发过程中,都会遇到获取IP或MAC地址的情况,那么如何在代码层面实现获取呢?接下来就为大家从代码层面介绍获取的方式。

    2024年02月12日
    浏览(52)
  • 教你如何获取客户端IP和MAC地址的工具类,实战篇(Java版)

    在开发过程中,都会遇到获取IP或MAC地址的情况,那么如何在代码层面实现获取呢?接下来就为大家从代码层面介绍获取的方式。

    2024年02月03日
    浏览(49)
  • k8s ingress获取客户端客户端真实IP

    在Kubernetes中,获取客户端真实IP地址是一个常见需求。这是因为在负载均衡架构中,原始请求的源IP地址会被替换成负载均衡器的IP地址。 获取客户端真实IP的需求背景包括以下几点: 安全性:基于客户端IP进行访问控制和认证授权可以提高系统安全性。 日志记录与审计:记

    2024年02月13日
    浏览(61)
  • SQLServer如何获取客户端IP

    SQLServer如何获取客户端IP 很多用户询问如何通过SQLServer获取客户端IP从而定位一些问题,比如链接泄露,其实主要是利用几个相关视图,如下给出一些SQL方便用户排查 当前链接 所有链接 查看更详细的链接参数配置 ------获取

    2024年02月09日
    浏览(45)
  • nginx获取客户端真实ip

    在nginx中获取客户端真实IP的方法有多种,以下是其中两种常用的方法: 使用nginx的access_log模块记录请求日志,并在日志中包含客户端的真实IP信息。例如: 在上述配置中,通过使用http_x_forwarded_for字段来获取客户端的真实IP地址。如果该字段不存在或不合法,则使用remote_ad

    2024年02月16日
    浏览(51)
  • 获取客户端真实IP的方法

    获取请求的IP很简单,可以直接使用request.getRemoteAddr()直接获取。但由于请求在转发到接口前,会经过大量的反向代理,例如流程图中,至少要经过Nginx后,请求才会转发到接口,因此需要对请求接口的IP做处理,提取客户端真实IP地址。 配置Nginx的配置文件,需要反向代理服务

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包