关闭

request 获取访问IP

1300人阅读 评论(0) 收藏 举报

转自:http://blog.csdn.net/leoz0802/article/details/6364565

0:0:0:0:0:0:0:1是ipv6的表现形式,对应ipv4来说相当于127.0.0.1,也就是本机

如果项目部署在本机win7系统,访问时是通过 localhost 来访问,

用java获取ip地址可能会出现该问题,这时获取的ip将是 0:0:0:0:0:0:0:1

 

要是机器在局域网中,访问时使用自己的ip访问,如 我的ip是 :192.168.123.156

访问url:http://192.168.123.156:8080/test

这时候请求会经过路由器转发,所以服务器获取的就是本机的局域网内ip,在java中获取的ip就是 192.168.123.156了

 

下面几个获取ip的方法:

	public static String getIP(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (!checkIP(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (!checkIP(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if (!checkIP(ip)) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}
	private static boolean checkIP(String ip) {
		if (ip == null || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)
				|| ip.split(".").length != 4) {
			return false;
		}
		return true;
	}

可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?

    答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。如:

    X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100

    用户真实IP为: 192.168.1.110


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Django学习笔记—获取正确的客户端IP地址

原文地址: http://newliu.com/post/12/ 在使用了comments库为网站添加评论系统后,我发现一个奇怪的现象:在admin后台看到的评论者IP地址居然全部都是12...
  • u011249248
  • u011249248
  • 2013-08-09 11:57
  • 1452

Request获取用户真实IP

在Servlet里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid,Nginx等反向代理软件就不能...
  • yin_jw
  • yin_jw
  • 2014-04-25 14:20
  • 50914

Java 通过Request请求获取IP地址

Java 通过Request请求获取IP地址项目需要将不同省份的用户,展示不同内容,所以需要通过Request请求获取IP地址。先来贴代码, 如果你要在生产环境使用就直接拿去用吧,我这边已经上线了。代...
  • chwshuang
  • chwshuang
  • 2017-05-14 11:21
  • 1308

关于httpservletrequest的获取真实的ip

request方法客户端IP: request.getRemoteAddr() 输出:192.168.0.106 客户端主机名:request.getRemoteHost()输出:abc ...
  • u012079603
  • u012079603
  • 2014-12-17 09:05
  • 4636

通过httprequest获取用户ip

转的,留着吧。。 import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.ap...
  • Mr_Lonely_f
  • Mr_Lonely_f
  • 2015-09-18 14:49
  • 924

Java 通过HttpRequest获取请求用户真实IP地址

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客...
  • xiaokui_wingfly
  • xiaokui_wingfly
  • 2015-05-21 10:59
  • 26733

Java 通过Request请求获取IP地址对应省份、城市

Java 通过Request请求获取IP地址对应省份、城市项目需要将不同省份的用户,展示不同内容,所以需要通过Request请求获取IP地址, 然后通过IP获取IP对应省份。这里的操作步骤一共有步: ...
  • chwshuang
  • chwshuang
  • 2017-05-14 13:13
  • 2822

通过request对象获取请求ip、url等

package com.lieni.core.util; import javax.servlet.http.HttpServletRequest; import org.apache.commo...
  • User_xiangpeng
  • User_xiangpeng
  • 2017-03-28 09:38
  • 1603

nginx代理后,获取request的ip

应用程序部署上线,一般都会用nginx之类的来进行反向代理,而不是直接访问tomcat之类的容器. 这时候如果用平时的获取ip的代码,就只会获取到nginx所在服务器的ip, 就失去了本身的意义. 今...
  • qq315737546
  • qq315737546
  • 2016-08-15 22:52
  • 3379

cxf+spring开发(二)--- Ip地址拦截器,限制客户端Ip地址,只允许数据库中已经配置的Ip地址

上一篇博文中介绍了如何搭建cxf和spring环境,本文将围绕如何在此环境下编写拦截器,只允许已经配置好的IP地址访问服务器端。 一、修改配置文件applicationContext <beans ...
  • Yolanda_NuoNuo
  • Yolanda_NuoNuo
  • 2015-07-23 09:59
  • 2902
    个人资料
    • 访问:522283次
    • 积分:6947
    • 等级:
    • 排名:第3873名
    • 原创:75篇
    • 转载:537篇
    • 译文:1篇
    • 评论:91条
    最新评论