资源预览内容
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
Java获取客户端真实IP也址过程解析这篇文章主要介绍了Java获取客户端真实IP地址过程解析文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下业务背景服务器端接收客户端请求的时候,一般需要进行签名验证,客户端P限定等拦截,在进行IP限定的时候就需要获取客户端真实的IP。基础知识访问服务端的方式一般分为两种:未经过代理,直接访问服务器端通过多级代理,最终到达服务器端()。a客户端请求信息都包含在另一种则行不通,但是可以通过号隔开,例如:10.47.103.v中,对于第一种访问方式可以通过方法获得客户端真实IP,而a获得转发后请求信息。当客户端请求被转发时,IP将会追加在其后并以英文逗13,4.2。.2.2,10.96.112.230请求中的参数:ader(x-forwarader(X-Real-IP客户端访问经过转发,IP将会追加在其后并以逗号隔开。最终准确的客户端信息为:* a不为空,则为逗号前第一个IP; a不为P则为该IP;否则为;相关请求头的解释:a记录一个请求从客户端出发到目标服务器过程中经历的代理,或者负载平衡设备的P。这是由缓存代理软件引入,用来表示请求端真实IP现在已经成为事实上的标准,被各大代理、负载均衡等转发服务广泛使用,并被写入7aP标准之中。格式为a,一般情况下,第一个为客户端真实,后面的为经过的代理服务器的。现在大部分的代理都会加上这个请求头。Prli;nt-IP/这个一般殳是经过aa服务器的请求才会有,用aa做代理时一般会加上Pr请求头,而IPP是他的o件加上的头。TP_CLI有些代理服务器会加上此请求头。R;al-I代理一般会加上此请求头。获取客户端真实IP地址源码:获取客户端的ip地址注意本地测试访问项目地址时,浏览器请求不要用a请用本机ip;否则,取不到ip*author;ast7a年月曰真实IP地址ublicstaticStringg;tCli;ntIpAddr;ss(HttpS;rv获取请求主机IP地址如果通过代理进来,则透过防火墙获取真関P地址Stringh;ad;rNam;=x-forward;d-for;Stringip=r;qu;st.g;tH;ad;r(h;ad;rNam;);多次反向代理后会有多个IP值,第一个IP才是真实IP它们按照英文逗号分割if(checkIp(ip)headerName=Proxy-Client-IP;ip=request.getHeader(headerName);if(checkIp(ip)headerName=WL-Proxy-Client-IP;ip=request.getHeader(headerName);if(checkIp(ip)headerName=HTTP_CLIENT_IP;ip=request.getHeader(headerName);if(checkIp(ip)headerName=HTTP_X_FORWARDED_FOR;ip=request.getHeader(headerName);if(checkIp(ip)headerName=X-Real-IP;ip=request.getHeader(headerName);if(checkIp(ip)headerName=remoteaddr;ip=request.getRemoteAddr();/127.0.0.1ipv4,0:0:0:0:0:0:0:1ipv6if(127.0.0.1.equals(ip)|0:0:0:0:0:0:0:1.equals(ip)根据网卡取本机配置的pInetAddressinet=null;tryinet=InetAddress.getLocalHost();catch(UnknownHostExceptione)e.printStackTrace();ip=inet.getHostAddress();logger.info(getClientIpIpis+ip+,headerName=+headerName);returnip;privatestaticbooleancheckIp(Stringip)if(null=ip|ip.length()=0|unknown.equalsIgnoreCase(ip)returntrue;returnfalse;以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号