请教java获取客户端真实IP最好的方法

finemi 2016-03-22 04:23:10
之前开发一个项目,使用 request.getRemoteAddr(),发现部分情况获取到的是内网IP,
然后网上搜索了下,有通过请求头的 Real-IP、x-forwarded-for等等头信息获取的,大部分是正常了,但是后来发现在客户的部分机器上始终无法获取到真实IP,一直都是内网IP,无奈最后使用了第三方接口的方式获取。。

想问下java就没有比较完美的获取真实IP的方法吗?
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snailmi 2018-12-21
  • 打赏
  • 举报
回复
代码没问题,可以用。
Snailmi 2018-12-21
  • 打赏
  • 举报
回复
你用localhost当然不行
tacos 2016-03-23
  • 打赏
  • 举报
回复
引用 2楼我是你的主体 的回复:
[quote=引用 1 楼 u010783365 的回复:]

public static String getIpAddr(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.getRemoteAddr();
    }
    return ip;
}
。。。就是用的这个。。 不行的,有时候这三种始终都是内网IP[/quote]是么!那一起等大牛吧
finemi 2016-03-22
  • 打赏
  • 举报
回复
引用 1 楼 u010783365 的回复:

public static String getIpAddr(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.getRemoteAddr();
    }
    return ip;
}
。。。就是用的这个。。 不行的,有时候这三种始终都是内网IP
tacos 2016-03-22
  • 打赏
  • 举报
回复

public static String getIpAddr(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.getRemoteAddr();
    }
    return ip;
}

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧