使用 request.getRemoteAddr() 返回 0:0:0:0:0:0:0:0:1

2022-08-31 15:51:19

我正在尝试在我的web应用程序中打印已登录用户的IP地址。如果用户从另一台电脑(该电脑位于同一网络下,因为 Web 应用程序在我的电脑中运行)使用代码的 IP 地址进行连接,则返回其 IP 地址。当我从运行Web应用程序的PC登录时,我得到这个IP地址0:0:0:0:0:0:0:0:1。

为什么?这些命令之间有什么区别(我应该使用哪个?)。非常感谢!192.168.10.120:8080/WebApplicationrequest.getRemoteAddr()request.getLocalAddr())


答案 1

在您的情况下,当您尝试在本地计算机上访问它时,它将返回该值。但是,让您的一个朋友访问它,您将收到预期的结果getRemoteAddr

来自 javadoc:

getRemoteAddr - 返回发送请求的客户端或上一个代理的 IP 地址

getLocalAddr - 返回接收请求的接口的 IP 地址。


答案 2

当我们从IPv4迁移到IPv6时,他们正在将环回地址(localhost)更改为从中获取此地址的原因。0:0:0:0:0:0:0:1127.0.0.1

至于功能:

  • getRemoteAddr()返回客户端 IP

  • getLocalAddr()返回运行应用程序的服务器的 IP