String realIP=request.getHeader( "x-forwarded-for ");
if (realIP !=null&&realIP.length() !=0){
while((realIP!=null)&&(realIP.equals( "unknown "))){
realIP = request.getHeader( "x-forwarded-for ");
}
}
if(realIP == null || realIP.length() == 0){
realIP = request.getHeader( "Proxy-Client-IP ");
}
if(realIP == null || realIP.length() == 0){
realIP = request.getHeader( "WL-Proxy-Client-IP ");
}
if(realIP==null || realIP.length() == 0){
realIP=request.getRemoteAddr();
}
这个得不到,为什么啊
if (realIP !=null&&realIP.length() !=0){
while((realIP!=null)&&(realIP.equals( "unknown "))){
realIP = request.getHeader( "x-forwarded-for ");
}
}
if(realIP == null || realIP.length() == 0){
realIP = request.getHeader( "Proxy-Client-IP ");
}
if(realIP == null || realIP.length() == 0){
realIP = request.getHeader( "WL-Proxy-Client-IP ");
}
if(realIP==null || realIP.length() == 0){
realIP=request.getRemoteAddr();
}
这个得不到,为什么啊
得到客户端公网地址: request.getRemoteAddr()
如果客户端在内网,只能得到代理的机器IP.你可以这么想一下,假设一个局域网内的机器访问你,你如果能得到局域网内机器的ip,那么这个局域网不就意味这可以让你随意进入了。。
以前你的这个问题,我也想过,但是确实没有什么有效方法,除非是控件,但是谁又能信任你这个控件的安全性呢?
package www.anizx.com.Tools;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
*
* 项目名称:获取公网的IP
* 类名称:GetNetWork
* 包名:www.anizx.com.Tools
* 类描述:
* 创建人:梁章荣
* 创建时间:Jun 24, 2010 7:08:14 PM
* 修改人:梁章荣
* 修改时间:Jun 24, 2010 7:08:14 PM
* 修改备注:
* 个人主页:http://www.anizx.com
* 个人邮箱:[email protected]
* 个人QQ:543243603
*======================================================================
* Change History Log
* ----------------------------------------------------------------------
* Mod. No. | Date | Name | Reason | Change Req.
* ----------------------------------------------------------------------
* | Jun 24, 2010 | ZhangRong.Liang | Created | 梁章荣
*======================================================================
*/
public class GetNetWork {
//查询IP的工具路径
private static String PATHURL = "http://www.ip138.com/ips.asp"; public List<String> GetThePublcNetWork() { try {
URL url = new URL(PATHURL);
//把url的内容open
InputStreamReader isr = new InputStreamReader(url.openStream());
//写进去
BufferedReader brf = new BufferedReader(isr);
String str = "";
StringBuffer sb = new StringBuffer("");
String webStr = "";
String ip = "";
while ((str = brf.readLine()) != null) {
//获取网页的所有内容
sb.append(str + "\r\n");
}
brf.close();
webStr = sb.toString();
ip = sb.toString();
webStr = webStr.substring(webStr.indexOf("来自"), webStr
.indexOf("<br/>"));
ip = ip.substring(ip.indexOf("您的IP地址是"), ip.indexOf("来自"));
List<String> list = new ArrayList<String>();
list.add(webStr);
list.add(ip);
if (list != null) {
return list;
}
return null;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
} public static void main(String[] args) {
GetNetWork n = new GetNetWork();
List<String> list = n.GetThePublcNetWork();
String Ip = (String) list.get(0);
String city = (String) list.get(1);
String[] IArray = Ip.split(":");
String[] citys = city.split("您的IP地址是:");
String tempCtity = citys[1].substring(1, citys[1].length() - 2);
System.out.println(IArray[1].toString());
System.out.println(tempCtity); }}
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;
}