猿问

获取客户端的IP地址

我正在使用JSP,Servlets(Container:Glassfish)开发一个Web应用程序,我需要在其中获取客户端IP Address。


我正在获取客户端的IP地址,因为我只想在有办公室的计算机上访问某些页面(如客户维护表单),我想限制访问办公室以外的那些页面。


以下是我的代码到目前为止:


WAY1

String ipAddress =  request.getRemoteAddr();

System.out.println("IP Address: "+ipAddress);

way2

String ipAddress=null;

String getWay = request.getHeader("VIA");   // Gateway

ipAddress = request.getHeader("X-FORWARDED-FOR");   // proxy

if(ipAddress==null)

{

    ipAddress = request.getRemoteAddr();

}

System.out.println("IP Address: "+ipAddress);

different IP Address每次重新启动计算机时,上面的代码都会给我(关机 - >启动或重启)。


我变得IP6喜欢:


fe80:0:0:0:20ca:1776:f5ff:ff15%13

让我知道这段代码有什么问题?


弑天下
浏览 433回答 3
3回答

月关宝盒

我使用以下静态帮助器方法来检索客户端的IP:public static String getClientIpAddr(HttpServletRequest request) {      String ip = request.getHeader("X-Forwarded-For");      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("Proxy-Client-IP");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("WL-Proxy-Client-IP");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("HTTP_X_FORWARDED_FOR");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("HTTP_X_FORWARDED");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("HTTP_X_CLUSTER_CLIENT_IP");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("HTTP_CLIENT_IP");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("HTTP_FORWARDED_FOR");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("HTTP_FORWARDED");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("HTTP_VIA");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getHeader("REMOTE_ADDR");      }      if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {          ip = request.getRemoteAddr();      }      return ip;  }

温温酱

我喜欢这个,你可以尝试一下public String getIpAddr(HttpServletRequest request) {         String 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.getRemoteAddr();         }         return ip;      }   
随时随地看视频慕课网APP

相关分类

Java
我要回答