js判断内网还是外网的请求。

/*判断是否是内网IP*/
function isInnerIPFn(){
   // 获取当前页面url
    var curPageUrl = window.location.href;
    console.log('curPageUrl-0  '+curPageUrl);

    var reg1 = /(http|ftp|https|www):\/\//g;//去掉前缀
    curPageUrl =curPageUrl.replace(reg1,'');
    // console.log('curPageUrl-1  '+curPageUrl);

    var reg2 = /\:+/g;//替换冒号为一点
    curPageUrl =curPageUrl.replace(reg2,'.');
    // console.log('curPageUrl-2  '+curPageUrl);

    curPageUrl = curPageUrl.split('.');//通过一点来划分数组
    console.log(curPageUrl);

    var ipAddress = curPageUrl[0]+'.'+curPageUrl[1]+'.'+curPageUrl[2]+'.'+curPageUrl[3];

    var isInnerIp = false;//默认给定IP不是内网IP
    var ipNum = getIpNum(ipAddress);
    /**
     * 私有IP:
     *         A类  10.0.0.0    -10.255.255.255
     *       B类  172.16.0.0  -172.31.255.255
     *       C类  192.168.0.0 -192.168.255.255
     *       D类  127.0.0.0   -127.255.255.255(环回地址)
     **/
    var aBegin = getIpNum("10.0.0.0");
    var aEnd = getIpNum("10.255.255.255");
    
    var bBegin = getIpNum("172.16.0.0");
    var bEnd = getIpNum("172.31.255.255");
    
    var cBegin = getIpNum("192.168.0.0");
    var cEnd = getIpNum("192.168.255.255");
    
    var dBegin = getIpNum("127.0.0.0");
    var dEnd = getIpNum("127.255.255.255");
    
    isInnerIp = isInner(ipNum,aBegin,aEnd) || isInner(ipNum,bBegin,bEnd) || isInner(ipNum,cBegin,cEnd) || isInner(ipNum,dBegin,dEnd);
    console.log('是否是内网:'+isInnerIp);
    return isInnerIp;
}

function getIpNum(ipAddress) {/*获取IP数*/
    var ip = ipAddress.split(".");
    var a = parseInt(ip[0]);
    var b = parseInt(ip[1]);
    var c = parseInt(ip[2]);
    var d = parseInt(ip[3]);
    var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
    return ipNum;
}

function isInner(userIp,begin,end){
    return (userIp>=begin) && (userIp<=end);
}



补充:

1、jsp页面使用 内置对象request获取ip
<script type="text/javascript">
    var ipValue = "<%= request.getRemoteAddr%>";
</script>

2、三个内网段范围
(1)    10.*.*.*                                    10.0.0.0/8:10.0.0.0~10.255.255.255
(2)    172.16.*.*至172.31.*.*            172.16.0.0/12:172.16.0.0~172.31.255.255
(3)    192.168.*.*                             192.168.0.0/16:192.168.0.0~192.168.255.255
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值