Java 验证IP合法性,获取Request请求源的Ip地址

1、前言

         有时候我们需要在服务多记录请求用的的IP地址等相关信息,从而来做一些事情,比如:过滤、拦截等。

         下边直接贴源码:

2、通过request获取ip地址

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-AuthenticationIp");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-AuthenticationIp");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
}

3、有时候我们需要根据用户输入的ip来验证合法性。

          最近,我在做一个网关项目的时候,需要设置ip黑白名单,就需要设置Ip,从而需要验证Ip的合法性:

/**
 * 验证IP是否合法
 * @param ip
 * @return
 */
public static boolean ipValidate(String ip) {
    if (StringUtils.isEmpty(ip)) return false;
    // 定义正则表达式
    String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
            + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
            + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
            + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
    // 判断ip地址是否与正则表达式匹配
    return ip.matches(regex);
}

4、说明:

          欢迎关注本人微信公众号:程序员刊(javamanual),每人分享Java技术干货、微服务、大数据、Python等等。

       

标微信公众号:程序员刊(javamanual)标题题

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值