servlets - 如何在servlet中获取客户端的远程地址?

标签 servlets proxy client ip-address

有什么办法可以获取到服务器的客户端的原始IP地址吗? 我可以使用 request.getRemoteAddr(),但我似乎总是获取代理或 Web 服务器的 IP。

我想知道客户端用于连接到我的 IP 地址。无论如何,我可以得到它吗?

最佳答案

试试这个:

public static String getClientIpAddr(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.getHeader("HTTP_CLIENT_IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getRemoteAddr();  
        }  
        return ip;  
    }  

关于servlets - 如何在servlet中获取客户端的远程地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4678797/

相关文章:

java - Hibernate Jsp Servlet 注册表单不起作用

java - 如何在jsp-servlet中的请求页面的同一页面上显示结果

Java 小服务程序 : Tomcat server find MongoDB classes and packages

c# - 是否可以通过 FTP 代理使用 C# FtpWebRequest?

javascript - Node.js http.get

java - 我们可以使用 hazelcast 中的客户端实例获取服务器配置吗?

Java:解析日期时间时出错(JSP、Servlet)

svn - 如何在 SharpSVN 客户端中使用代理

java - REST 代理与 REST 客户端到底是什么?

java - 使用 java NIO 选择器发送文件