大家好,request获取ip *** 相信很多的网友都不是很明白,包括获取请求的ip *** 也是一样,不过没有关系,接下来就来为大家分享关于request获取ip *** 和获取请求的ip *** 的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
本文目录
- j *** a servlet获取客户端IP
- request.getremoteaddr()获取用户真实IP报空指针异常
- ASP.NET 怎么获取客户端的外网IP *** ,急~
- asp.net如何获取IP
- 如何获取用户的真实IP
一、j *** a servlet获取客户端IP
在 *** P里,获取客户端的IP *** 的 *** 是:request.getRemoteAddr(),这种 *** 在大部分情况下都是有效的。但是在通过了 Apache,Squid等反向 *** 软件就不能获取到客户端的真实IP *** 了。如果使用了反向 *** 软件,用 request.getRemoteAddr() *** 获取的IP *** 是:127.0.0.1或 1 *** .168.1.110,而并不是客户端的真实IP。
request.getRemoteAddr()的 *** 获取的IP实际上是 *** 服务器的 *** ,并不是客户端的IP *** 。
于是可得出获得客户端真实IP *** 的 *** 一:
public String getRemortIP(HttpServletRequest request){
if(request.getHeader("x-forwarded-for")== null){
ret *** n request.getRemoteAddr();
ret *** n request.getHeader("x-forwarded-for");
你可以写一个Filter配置在web.xml中让服务器启动的时候就开始 *** 直到服务器停止!
二、request.getremoteaddr()获取用户真实IP报空指针异常
1、这种NullPointException情况一般发生在request请求已经完成或者结束后。原因是,服务器在获取远程IP *** 时,需要向远端发送一个 *** 作来获取该 *** ,但此时因为链接已经请求完成或关闭或 *** 原因中断,无法找到,所以会报出空指针异常。在正常请求 *** 中不会出现此情景,我遇到的情景是,我提前结束了请求,然后在异步线程中执行该 *** 来获取该 *** ,会报空指针异常。详情可以看tomcat下的http11包中Http11AprProcessor类。应该是 *** 报出的异常
2、我也是遇到后,自己分析的,能力有限,希望对你有用。
三、ASP.NET 怎么获取客户端的外网IP *** ,急~
1、在ASP中使用 Request.ServerVariables("REMOTE_ADDR")来取得客户端的IP *** ,但如果客户端是使用 *** 服务器来访问,那取到的就是 *** 服务器的IP *** ,而不是真正的客户端IP *** 。
2、要想透过 *** 服务器取得客户端的真实IP *** ,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR")来读取。
3、不过要注意的事,并不是每个 *** 服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR")来读取客户端的真实 IP,有些用此 *** 读取到的仍然是 *** 服务器的IP。
4、还有一点需要注意的是:如果客户端没有通过 *** 服务器来访问,那么用 Request.ServerVariables("HTTP_X_FORWARDED_FOR")取到的值将是空的。因此,如果要在程序中使用此 *** ,可以这样处理:
5、userip= Request.ServerVariables("HTTP_X_FORWARDED_FOR")
6、If userip="" Then userip= Request.ServerVariables("REMOTE_ADDR")
7、HttpContext.C *** rent.Request.UserHostAddress;
8、HttpContext.C *** rent.Request.ServerVariables["REMOTE_ADDR"];
9、string strHostName= System.Net.Dns.GetHostName();
10、string clientIPAddress= System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
11、HttpContext.C *** rent.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
12、var ip='<!--#echo var="REMOTE_ADDR"-->';
13、alert("Yo *** IP address is"+ip);
14、 obj= new ActiveXObject("rcbdyctl.Setting");
15、来自印度的MCT Maulik Patel提供了一种服务端的解决方案,很好:
16、if(Context.Request.ServerVariables["HTTP_VIA"]!=null)//服务器, using proxy
17、 ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();// Ret *** n real client IP.
18、else//如果没有使用 *** 服务器或者得不到客户端的ip not using proxy or can't get the Client IP
19、 ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString();//While it can't get the Client IP, it will ret *** n proxy IP.
20、有些客户端会因为“header_access deny”的安全设置而不发给我们Ip
四、asp.net如何获取IP
1、在ASP中使用 Request.ServerVariables("REMOTE_ADDR")来取得客户端的IP *** ,但如果客户端是使用 *** 服务器来访问,那取到的就是 *** 服务器的IP *** ,而不是真正的客户端IP *** 。
2、要想透过 *** 服务器取得客户端的真实IP *** ,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR")来读取。
3、不过要注意的事,并不是每个 *** 服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR")来读取客户端的真实 IP,有些用此 *** 读取到的仍然是 *** 服务器的IP。
4、还有一点需要注意的是:如果客户端没有通过 *** 服务器来访问,那么用 Request.ServerVariables("HTTP_X_FORWARDED_FOR")取到的值将是空的。因此,如果要在程序中使用此 *** ,可以这样处理:
5、userip= Request.ServerVariables("HTTP_X_FORWARDED_FOR")
6、If userip="" Then userip= Request.ServerVariables("REMOTE_ADDR")
7、HttpContext.C *** rent.Request.UserHostAddress;
8、HttpContext.C *** rent.Request.ServerVariables["REMOTE_ADDR"];
9、string strHostName= System.Net.Dns.GetHostName();
10、string clientIPAddress= System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
11、HttpContext.C *** rent.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
12、var ip='<!--#echo var="REMOTE_ADDR"-->';
13、alert("Yo *** IP address is"+ip);
14、 obj= new ActiveXObject("rcbdyctl.Setting");
15、来自印度的MCT Maulik Patel提供了一种服务端的解决方案,很好:
16、if(Context.Request.ServerVariables["HTTP_VIA"]!=null)//服务器, using proxy
17、 ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();// Ret *** n real client IP.
18、else//如果没有使用 *** 服务器或者得不到客户端的ip not using proxy or can't get the Client IP
19、 ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString();//While it can't get the Client IP, it will ret *** n proxy IP.
20、有些客户端会因为“header_access deny”的安全设置而不发给我们Ip
五、如何获取用户的真实IP
在 *** P里,获取客户端的IP *** 的 *** 是:request.getRemoteAddr(),这种 *** 在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向 *** 软件就不能获取到客户端的真实IP *** 了。如果使用了反向 *** 软件,用 request.getRemoteAddr() *** 获取的IP *** 是:127.0.0.1或 1 *** .168.1.110,而并不是客户端的真实IP。
经过 *** 以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的 *** 返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以 *** 原有的客户端 IP *** 和原来客户端请求的服务器 *** 。
举例来说,当我们访问口碑网首页hangzhou.jsp时,其实并不是我们浏览器真正访问到了服务器上的hangzhou.jsp文件,而是先由 *** 服务器Nagix去访问ha *** zhou.jsp, *** 服务器再将访问到的结果返回给我们的浏览器,因为是 *** 服务器去访问hangzhou.jsp的,所以hangzhou.jsp中通过 request.getRemoteAddr()的 *** 获取的IP实际上是 *** 服务器的 *** ,并不是客户端的IP *** 。
获得客户端真实IP *** 的 *** 一:
public String getRemortIP(HttpServletRequest request){
if(request.getHeader("x-forwarded-for")== null){
ret *** n request.getRemoteAddr();
ret *** n request.getHeader("x-forwarded-for");
public String getIpAddr(HttpServletRequest request){
String ip= request.getHeader("x-forwarded-for");
if(ip== null|| ip.length()== 0||"unknown".equalsI *** oreCase(ip)){
ip= request.getHeader("Proxy-Client-IP");
if(ip== null|| ip.length()== 0||"unknown".equalsI *** oreCase(ip)){
ip= request.getHeader("WL-Proxy-Client-IP");
if(ip== null|| ip.length()== 0||"unknown".equalsI *** oreCase(ip)){
request获取ip *** 的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于获取请求的ip *** 、request获取ip *** 的信息别忘了在本站进行查找哦。