【问题标题】:how to get Client system Ip Address in Serverlet request [duplicate]如何在Servlet请求中获取客户端系统IP地址[重复]
【发布时间】:2016-12-29 11:07:43
【问题描述】:
    @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Response login(@Context HttpHeaders headers, @Context HttpServletRequest request) {
            System.out.println(getClientIpAddress(request));
            String ipAddress = request.getHeader("X-FORWARDED-FOR");
            if (ipAddress == null) {
                ipAddress = request.getRemoteAddr();
            }
            System.out.println("ip:" + ipAddress);
            return new LoginUtils().performLogin(headers.getRequestHeaders());
        }  

  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();
        }

但是我没有得到 IP 地址我得到相同的 127.0.0.1 这个值来自每个请求不同的系统可以请告诉我如何获取 IP 地址。

【问题讨论】:

  • 您是从本地网络访问服务器吗?尝试远程访问它(移动网络上的电话或其他东西),看看是否会改变观点。
  • 我做了同样的事情,但在这种情况下,我也得到了 127.0.0.1
  • 我想获取网络 IP 地址而不是主机地址

标签: java servlets


【解决方案1】:

你可以这样做:

使 HttpServletRequest Autowired 可用于控制器的任何功能:

@Autowired
private HttpServletRequest request;

然后像这样在你的控制器中使用它:

 String remoteAddr = request.getRemoteAddr();
 String localAddres = request.getLocalAddr();

【讨论】:

    猜你喜欢
    • 2014-06-05
    • 2014-08-16
    • 2020-03-17
    • 2018-03-18
    • 2015-05-27
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多