获取请求来源ip地址
来源:互联网 发布:中日互译软件 编辑:程序博客网 时间:2024/05/22 06:46
package com.common;import javax.servlet.http.HttpServletRequest;public class RemortIP { private static final String[] PROXY_REMOTE_IP_ADDRESS = { "X-Forwarded-For","Proxy-Client-IP", "WL-Proxy-Client-IP", "X-Real-IP" }; private static final Pattern INNER_IP_ADDR_RE = Pattern.compile("(10\\.)|(172\\.((1[6-9])|(2[0-9])|(3[0-1]))\\.)|(192\\.168\\.)"); /** * 是否局域网ip地址 * @time 2016年6月22日 * @param ip * @return true 是,false 否 */ public static boolean isInnerIpAddr(String ip) { Matcher ipmatcher = INNER_IP_ADDR_RE.matcher(ip); return ipmatcher.find(); } /** * 获取客户端真实ip * @time 2016年6月22日 * @param req * @return */ public static String getClientIP(HttpServletRequest req) { String ip = ""; for (int i=0; i<PROXY_REMOTE_IP_ADDRESS.length; ++i) { ip = req.getHeader(PROXY_REMOTE_IP_ADDRESS[i]); if (StringUtils.isEmpty(ip) || ip.equalsIgnoreCase("unknown")) continue; ip = getRemoteIpFromForward(ip.trim()).trim(); if (!isInnerIpAddr(ip)) { return ip; } } if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) { ip = req.getRemoteAddr(); } return ip; } /** * <p> * 从 HTTP Header 中截取客户端连接 IP 地址。如果经过多次反向代理, * 在请求头中获得的是以“,<SP>”分隔 IP 地址链,第一段为客户端 IP 地址。 * </p> * * @param xforwardIp 从 HTTP 请求头中获取转发过来的 IP 地址链 * @return 客户端源 IP 地址 */ private static String getRemoteIpFromForward( String xforwardIp ) { int commaOffset = xforwardIp.indexOf( ',' ); if ( commaOffset < 0 ) { return xforwardIp; } return xforwardIp.substring( 0 , commaOffset ); } }
0 0
- 获取请求来源ip地址
- 获取来源IP地址
- 获取请求ip地址
- 获取请求IP地址
- 获取请求IP地址
- java 获取请求IP地址
- 获取请求的IP地址
- Go获取请求IP地址
- jsp和js获取来源页地址和ip原理
- 在PHP中获取IP来源地址并且插入数据库
- Java获取来源网页的地址和ip
- 获取客户端的请求ip地址
- Java http请求获取ip地址
- JAVA获取请求的真实ip地址
- Node.js获取请求IP地址
- Java 获取请求主机IP地址
- Java 获取请求主机IP地址
- 获取http请求的真实IP地址
- Android中Styles、Themes、attrs介绍和他们之间的关系
- Android bitmap 颜色替换
- XStream、JAXB 日期(Date)、数字(Number)格式化输出xml
- JavaScript 拖动
- 链表的逆序
- 获取请求来源ip地址
- Struts2的工作原理及工作流程
- sql安装过程中,为 SQL Server 代理服务提供的凭据无效。若要继续操作,请为 SQL&
- 多版本PHP编译安装扩展
- 顶层const与底层const以及const的常量重叠问题
- JS执行环境与作用域
- LeetCode(29)-Plus One
- 线程安全/不安全的讨论
- 用JS模拟购物车