V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wafm
V2EX  ›  Java

获取客户端 IP,死活都是内网或者 127.0.0.1..

  •  
  •   wafm · 2016-09-13 15:19:08 +08:00 · 4898 次点击
    这是一个创建于 3017 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码是没啥问题的..返回的都是内网的或者是 127.0.0.1

                               public static String getSpbillCreateIp(HttpServletRequest request) {
    	if (request == null) {
    		return null;
    	}
    	String ipString = request.getHeader("x-forwarded-for");
    	if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {
    		ipString = request.getHeader("Proxy-Client-IP");
    	}
    	if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {
    		ipString = request.getHeader("WL-Proxy-Client-IP");
    	}
    	if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {
    		ipString = request.getRemoteAddr();
    		if(ipString.equals("127.0.0.1")) {
    			InetAddress inet=null;
    			
    			try {
    				inet = InetAddress.getLocalHost();
    			} catch (UnknownHostException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			ipString = inet.getHostAddress();
    		}
    	}
    
    	// 多个路由时,取第一个非 unknown 的 ip
    	final String[] arr = ipString.split(",");
    	for (final String str : arr) {
    		if (!"unknown".equalsIgnoreCase(str)) {
    			ipString = ipString+" + " +str;
    

    // break; } } // String ipString = request.getRemoteAddr(); return ipString; }

    8 条回复    2016-09-14 13:00:58 +08:00
    akira
        1
    akira  
       2016-09-13 16:11:58 +08:00
    在本机有放前端反代?
    wafm
        2
    wafm  
    OP
       2016-09-13 16:20:28 +08:00
    @akira 没有哦
    geeglo
        3
    geeglo  
       2016-09-13 16:56:45 +08:00 via iPhone
    你怎么测试的?
    zhuangzhuang1988
        4
    zhuangzhuang1988  
       2016-09-13 17:07:21 +08:00
    dump 一下 header..
    j8sec
        5
    j8sec  
       2016-09-13 19:15:57 +08:00
    你还不如用 js+webrtc 来获取呢
    jackmasa
        6
    jackmasa  
       2016-09-13 19:52:12 +08:00
    不要在本地跑这段代码。。。放服务器试试
    SoloCompany
        7
    SoloCompany  
       2016-09-13 22:49:05 +08:00
    1. 那就不会直接把 header 全部 dump 出来看一眼么
    2. 这样干很危险啊,也就是说默认允许伪造 ip 了
    fatpa
        8
    fatpa  
       2016-09-14 13:00:58 +08:00
    nginx 配置问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3554 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:23 · PVG 12:23 · LAX 20:23 · JFK 23:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.