java获取ip地址

有很多应用需要取得来访者的IP地址,比如防止未授权用户或恶意用户的访问等。J2EE的SERVLET标准接口javax.servlet.http.HttpServletRequest提供了getRemoteAddr()方法,用来取得来访者的IP地址。

request.getRemoteAddr()这种方法在大部分情况下获得的IP都是有效的。但是在客户通过向代理软件就不能获取到客户端的真实IP地址了。经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。所以想要获得客户端的真正IP就要先判断一下request.getHeader();

java获取ip地址代码:

public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

参考:

http://xiaoboss.iteye.com/blog/1181488

http://www.cnblogs.com/xuekyo/archive/2012/05/17/2505772.html

时间: 2024-08-02 12:32:55

java获取ip地址的相关文章

Java获取IP地址:request.getRemoteAddr()警惕(转)

原文出处:http://xiaoboss.iteye.com/blog/1181488 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAddr()

Java获取ip地址的几种方法

以下内容介绍下java获取ip地址的几种思路. 1.直接利用java.net.InetAddress类获取,不过这种方法只在windows环境下有效,在linux环境下只能获取localhost地址(即/etc/hosts文件内容) 代码如下: 1 import java.net.InetAddress; 2 3 /** 4 * This method works well in windows system. 5 * In Linux system it returns 127.0.0.1 t

Java获取IP地址:request.getRemoteAddr()警惕

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAddr() 方法获取的IP地址是:127.0.0.1 或 192.168.1.110 ,而并不是客

Java获取IP地址,IpUtils工具类,Java IP地址获取

================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration; import javax.servlet.http.HttpSer

java 获取ip地址

1.使用WIFI 首先设置用户权限 Xml代码 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-pe

java如何获取IP地址

import java.net.Inet6Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; public class GetMacIp { /** * @Title: main * @Description: TODO * @param :@param args * @retur

Java如何根据主机名(域名)获取IP地址?

在Java编程中,如何根据主机名(域名)获取IP地址? 以下示例显示了如何通过net.InetAddress类的InetAddress.getByName()方法将主机名更改为指定的IP地址. package com.yiibai; import java.net.InetAddress; import java.net.UnknownHostException; public class HostSpecificIPAddress { public static void main(Strin

php 获取 ip 地址 函数:

php 获取 ip 地址 函数:function getIP () //取IP函数 { global $_SERVER; if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } else if (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('REMOTE_ADDR')) { $ip =

四、获取IP地址工具包

由于getHostAddress()方法在Linux下读取hosts文件获取的是127.0.0.1 InetAddress.getLocalHost().getHostAddress() 所以这里采用NetworkInterfaces + getInetAddresses来获取IP地址 import com.luckin.compass.base.common.constants.ReturnStatus; import com.luckin.compass.base.common.except