有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jakarta ee如何用Java获取客户端的IP地址?要求getRemoteAddr()返回运行Tomcat服务器的机器的IP地址

我正在使用以下代码获取客户端的Ip地址。但是对于所有的头,我得到的是空值。和请求。getRemoteAddr()返回运行Tomcat服务器的机器的IP地址。那么,获取请求来自的机器的IP地址的有效方法是什么

    private static final String[] HEADERS_TO_TRY = { 
      "X-Forwarded-For",
      "Proxy-Client-IP",
      "WL-Proxy-Client-IP",
      "HTTP_X_FORWARDED_FOR",
      "HTTP_X_FORWARDED",
      "HTTP_X_CLUSTER_CLIENT_IP",
      "HTTP_CLIENT_IP",
      "HTTP_FORWARDED_FOR",
      "HTTP_FORWARDED",
      "HTTP_VIA",
      "REMOTE_ADDR" };

    public static String getClientIpAddress(HttpServletRequest request) {
      for (String header : HEADERS_TO_TRY) {
        String ip = request.getHeader(header);
        if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
            return ip;
        }
    }
    return request.getRemoteAddr();
   }

共 (0) 个答案