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

jv2fixgn  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(137)

我正在尝试打印登录用户在我的网络应用程序的IP地址。如果用户使用IP地址192.168.10.120:8080/WebApplication从另一台PC(在同一网络下,因为Web应用程序正在我的PC上运行)连接,则代码request.getRemoteAddr()request.getLocalAddr())将返回他的IP地址。当我从运行Web应用程序的PC登录时,我得到这个IP地址0:0:0:0:0:0:0:0:1。
为什么会这样?这些命令之间有什么区别(我应该使用哪个?))。非常感谢!

ffdz8vbo

ffdz8vbo1#

当我们从IPv4转移到IPv6时,他们正在将环回地址(localhost)从127.0.0.1更改为0:0:0:0:0:0:0:1,这就是为什么您会获得此地址。
至于功能:

  • getRemoteAddr()返回客户端IP
  • getLocalAddr()返回运行应用程序的服务器的IP
zpjtge22

zpjtge222#

在您的情况下,当您试图在本地计算机上访问它时,它将返回该值。但是让您的一个朋友访问它,您将收到预期的结果getRemoteAddr
在javadoc中:
getRemoteAddr -返回发送请求的客户端或最后一个代理的IP地址
getLocalAddr -返回接收请求的接口的IP地址。

t1qtbnec

t1qtbnec3#

**getRemoteAddr()**解决了您的目的,但如果客户端位于任何代理之后,则您将获得代理的IP地址:

返回发送请求的客户端或上一个代理的Internet协议(IP)地址。

**getLocalAddr()**返回应用运行的服务器IP。

ivqmmu1c

ivqmmu1c4#

如果您想获取127.0.0.1而不是0:0:0:0:0:0:0:1,则使用以下属性CATALINA_OPTS="$CATALINA_OPTS -Djava.net.preferIPv4Stack=true”启动应用程序服务器进程

相关问题