原創:轉載需注明原創地址 https://www.cnblogs.com/fanerwei222/p/11737637.html
本地調試如果使用的是localhost進行訪問, 則會獲取到 0:0:0:0:0:0:0:1, 將localhost修改成127.0.0.1或者你的本機ip地址再進行訪問就可以看到真實地址了.
這種方法獲取ip地址對nginx部署的服務也是有效果的, 對Apache和Weblogic應該也是可以的.
/** * 獲取客戶端真實ip地址 * @param request * @return */ public String getIp(HttpServletRequest request){ /** * 獲取距離服務器最遠的那個ip */ String ip = request.getHeader("x-forwarded-for"); if (ipIsNullOrEmpty(ip)){ /** * apache http服務代理加上的ip */ ip = request.getHeader("Proxy-Client-IP"); } if (ipIsNullOrEmpty(ip)){ /** * weblogic插件加上的頭 */ ip = request.getHeader("WL-Proxy-Client-IP"); } if (ipIsNullOrEmpty(ip)){ /** * 真實ip */ ip = request.getHeader("X-Real-IP"); } if (ipIsNullOrEmpty(ip)){ /** * 最后真實的ip */ ip = request.getRemoteAddr(); } return ip; } /** * 當前ip是否為空 * @param ip * @return */ public boolean ipIsNullOrEmpty(String ip){ if(ip == null || ip.length()==0 || "unknown".equalsIgnoreCase(ip)){ return true; } return false; }
