码迷,mamicode.com
首页 > 编程语言 > 详细

Java获取ip地址

时间:2018-05-12 16:15:00      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:email   case   反向代理   stat   header   remote   request   empty   alibaba   

package utils;

import com.alibaba.druid.util.StringUtils;
import javax.servlet.http.HttpServletRequest;

/**
 * IP地址
 * 
 * @author zengwei
 * @email 15797630391@163.com
 * @date 2018-03-23 22:02
 */
public class IPUtils {

  /**
   * 获取IP地址
   * 
   * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
   * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,
   * X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
   */
  public static String getIpAddr(HttpServletRequest request) {
    String ip = null;
    try {
      ip = request.getHeader("x-forwarded-for");
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
      }
      if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_CLIENT_IP");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
      }
    } catch (Exception e) {

    }
    return ip;
  }

}
  

  

Java获取ip地址

标签:email   case   反向代理   stat   header   remote   request   empty   alibaba   

原文地址:https://www.cnblogs.com/zengweiB208/p/9028860.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!