Java获取访问者ip

       公司在做平台,需要对为第三方应用提供服务,这就涉及到网络通信的安全问题。第三方应用在平台申请应用获取应用id和应用秘钥,使用秘钥对参数进行Hmac签名,平台会对这个值进行校验。为了更好的统计调用次数,平台对第三方应用的ip进行了限制。需要获取访问者的ip,在四层网络部署环境中不会对ip进行转换,所以用下面代码可以获取

request.getRemoteAddr();

      但是如果在七层部署环境就会涉及到ip的转换,或使用反向代理,以上代码不会得到正确的ip,于是有了以下的方法

/**

*获得用户远程地址

*/

public staticString getRemoteAddr(HttpServletRequest request){

String remoteAddr = request.getHeader("X-Real-IP");

if(isNotBlank(remoteAddr)) {

remoteAddr = request.getHeader("X-Forwarded-For");

}else if(isNotBlank(remoteAddr)) {

remoteAddr = request.getHeader("Proxy-Client-IP");

}else if(isNotBlank(remoteAddr)) {

remoteAddr = request.getHeader("WL-Proxy-Client-IP");

}

returnremoteAddr !=null? remoteAddr : request.getRemoteAddr();

}

你可能感兴趣的:(Java获取访问者ip)