gpt4 book ai didi

java - 从 HttpServer 获取客户端 ip

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:45 26 4
gpt4 key购买 nike

我需要知道客户端的 ip 地址,这是我的 cod

    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:
}
}

结果:客户端 ip 是:/0:0:0:0:0:0:0:0

为什么我获取不到真实客户端的ip?

最佳答案

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

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

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

此片段摘自 here , 因为解释是最好的,不需要编辑。有关更详细的解决方案,您可以引用此 question 的答案。 .尤其是用户 basZero 的那个。

关于java - 从 HttpServer 获取客户端 ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com