当前位置: 首页 > 面试题库 >

从HttpServer获取客户端IP

能正青
2023-03-14
问题内容

我需要知道客户的IP地址,这是我的鳕鱼

    public static void main(String[] args) throws Exception {
    server = HttpServer.create(new InetSocketAddress(8000), 0);
    server.createContext("/", new MyHandler());
    server.setExecutor(null); // creates a default executor
    server.start();
    System.out.println("Client ip is: " + server.getAddress().getAddress());
}

处理程序:

    public static class MyHandler implements HttpHandler {

    @Override
    public void handle(HttpExchange t) throws IOException {

    t.getRemoteAddress().getAddress(); // t is 0:0:0:0:0:0:0:
    }
}

结果: Client ip is: /0:0:0:0:0:0:0:0

为什么我无法获得真正的客户IP?


问题答案:

通常,您可以servletRequest.getRemoteAddr()用来获取正在访问Web应用程序的客户端的IP地址。但是,如果用户位于代理服务器后面或通过负载均衡器访问您的Web服务器(例如,在云托管中),则上述代码段将获取代理服务器或负载均衡器服务器的IP地址,而不是原始IP地址客户。

因此,您应该获得请求的HTTP标头“ X-Forwarded-For(XFF)”的IP地址

 String ipAddress = request.getHeader("X-FORWARDED-FOR");  
   if (ipAddress == null) {  
       ipAddress = request.getRemoteAddr();  
   }

此代码段摘自此处,因为解释是最好的,不需要编辑。



 类似资料:
  • 您可以get get client-go的一个版本,例如get get k8s.io/client-go/1.4/...或者获取k8s.io/client-go/1.4/kubernetes。 现在当我这么做的时候。这是输出- 警告:“k8s.io/client-go/1.4/...”匹配的无包无法加载包:包。:/users/shubhadeeproychowdhury/projects/Go/s

  • 问题内容: 我尝试使用JAX-WS检索客户端IP,我曾经使用过: 我在要求中得到一个,mc不为空。 我的问题是,因为我使用的是Java独立应用程序,所以要使用哪个JAR ? 谢谢 问题答案: 如何获取jax-ws服务的Web服务客户端地址取决于您是否: 将Web服务作为servlet运行(在Java EE容器中),或者 将Web服务作为独立应用程序运行(Java SE 6或7)。 Servlet

  • 问题内容: req.connection.remoteAddress,req.headers [‘x-forwarded- for’],req.ip,req.ips,这是什么意思? 是否有一种简单的方法可以简单地获取在Node.js / Express中向我的站点发出请求的客户端/用户代理的IP地址?我不了解所有代理内容,也不了解req对象的所有属性之间的所有区别。另外,我不了解Express的“

  • get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址

  • 问题内容: 是否有从客户端浏览器获取时区的可靠方法?我看到了以下链接,但我想要一个更强大的解决方案。 使用JavaScript自动检测时区 JavaScript中的时区检测 问题答案: 查看此存储库pageloom很有帮助 下载jstz.min.js并将功能添加到您的html页面 然后从您的显示代码调用此函数

  • get_client_ip($type = 0, $adv = false) 功能 获取客户端IP地址 参数 $type: string 返回类型 0 返回IP地址 1 返回IPV4地址数字 $adv: boolean 是否进行高级模式获取(有可能被伪装) 返回 string 客户端IP地址