JavaWeb 获取客户端的真实IP地址

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

通常我们在JavaWeb中获取客户端IP地址只需要使用request.getRemoteAddr();方法即可

如果前端使用了Nginx等反向代理的话,我们使用request.getRemoteAddr();方法获取到的IP地址就是127.0.0.1

因为经过代理以后,在客户端和服务器之间增加了中间层,因此服务器无法直接拿到客户端的 IP

但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址

所以我们可以使用以下方法来获取客户端的真实IP地址

public String getIpAddr(HttpServletRequest request) {
        //获取请求头"x-forwarded-for"对应的value
        String ip = request.getHeader("x-forwarded-for");
        //如果获取的ip值为空
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            //则获取请求头"Proxy-Client-IP"对应的value
            ip = request.getHeader("Proxy-Client-IP");
        }
        //如果获取的ip值仍为空
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            //则获取请求头"WL-Proxy-Client-IP"对应的value
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        //如果以上方式获取的ip值都为空
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            //则直接获取ip地址
            ip = request.getRemoteAddr();
        }
        //返回ip地址
        return ip;
    }

但是如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值

此时X-Forwarded-For中第一个非unknown的有效IP字符串即为用户真实IP地址文章来源地址https://www.toymoban.com/news/detail-550056.html

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

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

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

相关文章

  • Docker部署Nginx,无法获取客户端真实ip地址

    在部署docker版本nginx进行请求转发,意外发现nginx打印日志中的客户端ip并非为客户端的真实ip(221.237.xxx.xxx),而是docker虚拟网卡的ip(172.17.0.1) 开始猜测是nginx配置问题,对比其他环境,发现配置相同,但其他环境未出现此情况 通过查询资料,推测是docker网桥和linux防火墙存在

    2023年04月21日
    浏览(37)
  • nginx配置获取客户端的真实ip

    场景描述: 访问路径: A机器 - B机器的 -C虚拟机 : A机器为客户端用户,本地地址为 192.168.0.110 B机器为服务端反向代理服务器 本地地址为192.168.0.128 –(192.168.56.1) C机器为B主机安装的linux虚拟机,并安装了nginx ,本地ip为**(192.168.56.10)** 从侧面反映了反向代理的好处,直

    2024年02月05日
    浏览(44)
  • kubernetes获取客户端真实ip

    大部分的业务场景都需要获取客户端的ip来审计或采取措施,文章从nodeport暴露方式获取真实ip到ingress-nginx获取真实ip 初学者用k8s创建时暴露方式一般采用nodeport,这样方式暴露导致应用负载和访问者并不是同一段网络,当web服务获取客户端ip的时候会发现获取到的ip是k8s网关的

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

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

    2024年02月16日
    浏览(49)
  • nginx 获取客户端真实IP

    网站接入Web应用防火墙WAF(Web Application Firewall)后,访问请求在到达源站服务器之前,需要经过WAF的代理转发。这种情况下,源站服务器可以通过解析回源请求中的X-Forwarded-For记录,获取客户端的真实IP。 WAF在将客户端的访问请求转发到下一环节的服务器时,会在HTTP的请求头

    2023年04月09日
    浏览(47)
  • nginx获取客户端真实ip

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

    2024年02月16日
    浏览(49)
  • nginx如何获取真实客户端ip

    nginx作为反向代理服务器,即代理我们的服务端,下面介绍下如何配置nginx获取真实的客户端ip 1、配置nginx.con 2、在java程序中可以通过如下方式获取: 这样就可以打印出真实ip了!即request.getHeader(\\\"X-Real-IP\\\")的值 引用: 查看端口占用及释放所占用的端口_查询谷歌浏览器的端口

    2024年02月11日
    浏览(54)
  • Nginx(二十) 获取真实客户端IP

            客户端在访问互联网应用服务器时,与真实的应用服务器之间会因为有多层反向代理,而导致真实应用服务器获取的仅是最近一层的反向代理服务器 IP。为使 Nginx 后端的上游服务器可以获得真实客户端 IP,Nginx 提供了 ngx_http_realip_module 模块用以实现真实客户端

    2024年01月16日
    浏览(45)
  • k8s ingress获取客户端客户端真实IP

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

    2024年02月13日
    浏览(56)
  • 学习NodeJs之【如何获取客户端真实IP】

            产品想要增加一个操作日志的模块,重点记录增删改的操作ip。         这块业务其实需要按【是否代理】来分逻辑。首次开发时,并未考虑  测试生产环境有统一代理  ,导致传统的获取ip方式取到了容器网关ip。——显然这样是无法满足产品想要区分操作

    2024年02月03日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包