有什么办法可以获取到服务器的客户端的原始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/