java获取ip

java为什么通过地下的获取到的结果无论如何都是 127.0.0.1

为什么www.ip138.com可以正常获取客户端的ip呢。
public 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;

}

你是在本机上访问的吧!!

如果你的url是 http://localhost:port/context/xxx.xxx 或者是http://127.0.0.1:port/context/xxx.xxx

你获取到的就是本机127.0.0.1,获取不到你的外网IP的。

而www.ip138.com 获取的是你外网的IP地址。

哈哈,你用你本机IP去访问,然后换个IP,也会发现有变化,
例如,http://192.168.1.xxx:port/context/xxx.xxx
这样你获取到的ip就是192.168.1.xxx,然后再把机器ip换一下,在访问,当然就又变了。