package com.mi.util;

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils; public class GetIp { /**
* 获取访问者IP
*
* 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
*
* 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
* 如果还不存在则调用Request .getRemoteAddr()。
*
* @param request
* @return
*/ public static String getIpAddr(HttpServletRequest request){
String ip = request.getHeader("X-Real-IP");
if(StringUtils.isBlank(ip) && "unknown".equalsIgnoreCase(ip)){
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if(StringUtils.isBlank(ip) && "unknown".equalsIgnoreCase(ip)){
int index = ip.indexOf(',');
if(index != -1){
return ip.substring(0, index);
}else{
return ip;
}
}else{
return request.getRemoteAddr();
}
}
}

获取访问者ip的方法的更多相关文章

  1. 主机配置nginx后如何获取访问者IP

    he你早的时候写了一个根据访问者ip查询天气的小接口,那时候还没得买域名,没有搞nginx,测试自然没有问题,然后随着一个小工具一块上线了,今天突然发现我的小工具有好几个人在使用了,就想写一个记录访问 ...

  2. JAVA 获取访问者IP

    * 获取访问者IP * * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效. * * 本方法先从Header中获取X-Real- ...

  3. JAVA获取访问者IP地址

    pom <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomc ...

  4. 正确获取访问者ip

    使用$_SERVER['REMOTE_ADDR']获取访问者ip具有局限性.比如访问者系统位于docker环境时,$_SERVER['REMOTE_ADDR']获取到的ip为虚拟ip,而不是我们真正需 ...

  5. C#获取访问者ip和获取本机ip地址

    获取访问者ip: string userIP; // HttpRequest Request = HttpContext.Current.Request; HttpRequest Request = ...

  6. Spring AOP日志实现(二)--获取访问者IP及访问路径

    获取类及方法上的@RequestMapping注解: 应该是不等于: 获取访问者的ip地址,首先配置一个监听器: 配置完监听器后,就可以在类中注入一个HttpServletRequest: 获取ip:

  7. thinkphp 获取客户端ip地址方法

    /** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @param boolean $adv 是否进行高级模式获取(有 ...

  8. Linux下设置静态IP和获取动态IP的方法

    Linux下为机器设置静态IP地址: vim  /etc/sysconfig/network-scripts/ifcfg-eth0 修改这个文件内容如下形式: # Intel Corporation ...

  9. Asp.net 获取访问者IP

    using System.Web; namespace Wxlhjcyy.Public { public class GetIp { public static string IPAddress { ...

随机推荐

  1. [转载]对于GetBuffer() 与 ReleaseBuffer() 的一些分析

    先 转载一段别人的文章 CString类的这几个函数, 一直在用, 但总感觉理解的不够透彻, 不时还有用错的现象. 今天抽时间和Nico一起分析了一下, 算是拨开了云雾: GetBuffer和Rele ...

  2. mztree使用示例

    mztree使用:http://www.myexception.cn/open-source/1014169.html jquery的treeview使用:http://www.cnblogs.com ...

  3. Vim 常见操作

    1.复制所有内容 按照此顺序敲即可:gg(光标定位到文件头)  V(选中该行) G(选中该行开始到最后一行结尾) y(复制选中内容) 2.粘贴所有内容 正常模式下,敲p即可,如果遇到粘贴内容不全,需要 ...

  4. Maven详解之聚合与继承

    说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...

  5. BizTalk动手实验(十)业务活动监控(BAM)演示

    1 课程简介 通过本课程熟悉业务活动监控(BAM)的使用及各组件的配置. (本环境为Windows 2008 32位操作系统环境 + Visual Studio 2010 + BizTalk 210) ...

  6. C++产生随机数四则运算

    产生两位随机整数,随机四则运算符,生成30道运算题. 一.编程思路 看到要求,首先想到的是怎么运用随机数,因为自己对随机数的不熟练所以还要在查很多东西.在一个for循环内先产生两个30以内的随机数,在 ...

  7. Java接入图灵机器人,实现与机器人聊天

    很多人都玩过微信,其中就有与机器人聊天的功能:

  8. js弹窗

    常用人JS弹窗,lhgDialog 4.20

  9. 20145224&20145238《信息安全系统设计基础》实验四

    20145224陈颢文20145238荆玉茗 <信息安全系统设计基础>第四次实验报告 课程:信息安全系统设计基础 班级: 1452 姓名:荆玉茗 陈颢文 学号:20145238 20145 ...

  10. SqlServer 不是主键 如何自增

    SqlServer 不是主键 如何自增:INSERT INTO dbo.表 VALUES('14-19周',0,(select COUNT(1) from dbo.表)+1) (select COUN ...