利用Java获取ip地址
方法1
public static String getIp2(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip != null && !"unKnown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (ip != null && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
方法2.
public static String getIp(HttpServletRequest request) {
String remoteAddr = request.getRemoteAddr();
String forwarded = request.getHeader("X-Forwarded-For");
String realIp = request.getHeader("X-Real-IP");
String ip = null;
if (realIp == null) {
if (forwarded == null) {
ip = remoteAddr;
} else {
ip = remoteAddr + "/" + forwarded;
}
} else {
if (realIp.equals(forwarded)) {
ip = realIp;
} else {
ip = realIp + "/" + forwarded.replaceAll(", " + realIp, "");
}
}
return ip;
}
方法3
public static String getIp3(HttpServletRequest request) {
String remoteAddr = request.getRemoteAddr();
String forwarded = request.getHeader("X-Forwarded-For");
String realIp = request.getHeader("X-Real-IP");
String ip = null;
if (realIp == null) {
if (forwarded == null) {
ip = remoteAddr;
} else {
ip = remoteAddr + "/" + forwarded.split(",")[0];
}
} else {
if (realIp.equals(forwarded)) {
ip = realIp;
} else {
if (forwarded != null) {
forwarded = forwarded.split(",")[0];
}
ip = realIp + "/" + forwarded;
}
}
return ip;
}
最新文章
- HTML5开发笔记:图片上传预览
- 如何创建一个Edge 浏览器扩展
- VisualSVN 4.0.11补丁原创发布
- struts2中用xml配置文件去验证填写信息
- 为hbase新增节点
- GPIO 配置之ODR, BSRR, BRR 详解
- .NET自动识别HttpWebResponse的编码及是否压缩
- 17款免费的Bootstrap后台管理模板集合
- 【转】iOS开发Xcode7真机调试教程
- HTML初识
- Linux上安装jdk,mysql
- 例:判断是不是自有属性hasOwnProperty方法
- js 判断当前操作系统是ios还是android还是电脑端
- 存储开头结尾使用begin tran,rollback tran作用?
- python 基本语句
- C#生成ZIP压缩包
- Contest2073 - 湖南多校对抗赛(2015.04.06)
- POJ 2250 Compromise【LCS】+输出路径
- spring mvc 跨域问题。。。解决
- dokuwiki工具栏添加换行回车快捷键与按钮
热门文章
- 多条件搜索优化sql
- 破解网页右键被禁止js
- nginx-fastcgi 第九章
- Shell 常用技巧
- [c/c++] programming之路(20)、字符串(一)
- opencv学习之路(22)、轮廓查找与绘制(一)
- LINQ to Entities 不识别方法“System.String get_Item(Int32)”,因此该方法无法转换为存储表达式。
- Mac配置Hadoop最详细过程
- sublime text 3 显示空格和Tab
- Listview自定义了子View导致listview的onitemclick事件无效