如何获取正在访问服务器的用户的IP地址

时间:2018-03-06 02:02:19

标签: java spring spring-boot servlets spring-security

我在下面尝试了这段代码

@Autowired
private HttpServletRequest request;
request.getRemoteAddr();

但我只得到测试环境服务器的ip地址:220.5.13.85,我的IP地址是220.5.13.45。

我尝试在网络标签下的pagesource中查看请求标头,但我无法在那里找到我的IP地址。我只能看到远程地址:220.5.13.85:80在General和Host下:220.5.13.85 Referer:http://220.5.13.85在请求标题下是相同的。

1 个答案:

答案 0 :(得分:1)

没有获取客户端IP地址的标准方法。

一种方法是解析“X-Forwarded-For”并依赖request.getRemoteAddr();

public static String getClientIpAddress(HttpServletRequest request) {
    String xForwardedForHeader = request.getHeader("X-Forwarded-For");
    if (xForwardedForHeader == null) {
        return request.getRemoteAddr();
    } else {
        return new StringTokenizer(xForwardedForHeader, ",").nextToken().trim();
    }
}

以下网址还提到了其他方法:

https://www.mkyong.com/java/how-to-get-client-ip-address-in-java/