如何获取客户端访问的IP
2017-04-13 20:52
302 查看
我们知道,在JavaWeb中基于HTTP协议之上进行网络访问的,那么要是我们想获取到客户端访问服务端的IP地址该怎么办呢?
熟悉Servlet的开发者应该清楚,HttpServletRequest继承于 ServletRequest 在该接口中就有一个现成的方法 public String getRemoteAddr(); 官方文档给出的说明是:Returns the Internet Protocol (IP) address of the client or last proxy that sent the request.。可以看到获取到的IP地址有可能不是真正的IP,而是代理服务器的地址。故而直接想通过这样的方式获取到准确的IP是不可能的!!!!!!
我们可以通过如下的代码来获取,客户端的IP:
但是这样也不会特别准确
熟悉Servlet的开发者应该清楚,HttpServletRequest继承于 ServletRequest 在该接口中就有一个现成的方法 public String getRemoteAddr(); 官方文档给出的说明是:Returns the Internet Protocol (IP) address of the client or last proxy that sent the request.。可以看到获取到的IP地址有可能不是真正的IP,而是代理服务器的地址。故而直接想通过这样的方式获取到准确的IP是不可能的!!!!!!
我们可以通过如下的代码来获取,客户端的IP:
/** * * 获取请求IP地址 * @Title: getIpAddr * @Description: TODO * @param request * @param * @return String 返回类型 * @throws */ 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
- 如何获取访问web服务的客户端IP?客户端调用web服务时,对于有参函数能输入参数?
- 获取访问用户的客户端IP(适用于公网与局域网).
- 请求Requst中获取访问请求的客户端IP
- 请求Requst中获取访问请求的客户端IP
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
- 如何用ASP来获取客户端真实IP的地址
- asp如何获取客户端内网ip
- apache+weblogic获取客户端访问的真正ip
- 客户端访问服务器获取用户ip
- nginx之如何获取真实客户端ip
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称等
- 如何获取客户端IP、操作系统、浏览器
- 如何获取客户端IP、WEB服务器IP
- 请求Requst中获取访问请求的客户端IP
- 请求Requst中获取访问请求的客户端IP
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?