当前位置: 首页 > 知识库问答 >
问题:

使用Java[重复]从客户端的HTTP请求获取IP地址

闻人昊昊
2023-03-14

我在Tomcat 7上使用Spring 4 MVC实现RESTful Web服务。

想知道如果外部客户端发送HTTP请求,是否有办法在服务器端层中获取特定客户端的IP地址?

共有2个答案

潘衡
2023-03-14

简单POJO

public static InetAddress 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();  
    }  
    try {
        return InetAddress.getByName(ip);
    } catch (UnknownHostException e) {
        return null;
    }  
}
梁磊
2023-03-14
org.springframework.security.web.authentication.WebAuthenticationDetails

与web身份验证请求相关的选定HTTP详细信息的持有者。

指示从中接收身份验证请求的TCP/IP地址。

String ipAddress = ((WebAuthenticationDetails)SecurityContextHolder.getContext().getAuthentication().getDetails()).getRemoteAddress();

如果您在本地应用程序上进行测试,您的ip地址将为“0:0:0:0:0:0:1”

 类似资料:
  • 问题内容: 我正在使用python中的请求库发出HTTP请求,但我需要来自响应http请求的服务器的IP地址,因此,我试图避免进行两次调用(可能与响应的IP地址不同)请求。 那可能吗?是否有任何python http库允许我这样做? ps:我还需要发出HTTPS请求并使用经过身份验证的代理。 更新1: 例: 然后,我想知道响应中的方法或属性将哪些IP地址请求连接到了。在其他库中,我可以通过找到袜子

  • 问题内容: 我想获取使用我网站的客户IP地址。我正在使用PHP superglobal: 但是我看到它不能使用此提供正确的IP地址。我得到了我的IP地址,发现它与我的IP地址不同,并且我还可以在某些网站上看到我的IP地址,例如: 我粘贴了提供PHP功能的IP地址,但是此网站未显示任何结果。这个问题是怎么发生的,如何获得客户端的IP地址? 问题答案: 获取访问者/客户的IP地址的最简单方法是使用或变

  • get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址

  • 我的安全配置有问题,我需要创建一个访问我的应用程序的IP列表。 我的问题是以动态的方式为我的所有应用程序请求获取Ip。但是我不想为我的应用程序的所有请求添加一个HttpServletRequest,我想要的是一个在每个请求之前调用的方法,甚至在SecurityConfig事件之前。 我尝试在我的控制器类中自动生成它,但我的应用程序没有执行。我该怎么做才能让这件事成功?

  • get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址

  • 如何在基于网络的 HTTP 客户端中重试 HTTP 请求? 请考虑以下处理程序,如果收到 HTTP 响应代码 503,它将尝试在 1 秒后重试 HTTP 请求: 在本例中,当我写入通道时,管道中的其他处理程序会看到HttpObjects,但实际上不会再次执行HttpRequest——只接收到一个HttpResponse。 我认为在这种情况下我只是滥用了 Channel,我需要创建一个新的通道(表示