一尘不染

为什么request.getRemoteAddr()根据上下文返回ipv4或ipv6(后查询或Ajax查询)

java

我没有使用Spring / GWT的网络应用程序,该应用程序使用Flash上​​传文件。

当我使用GWT发送ajax请求并尝试获取用户ip地址时,我获得了ipv4地址,例如:127.0.0.1

但是当我使用Flash上​​传文件(以及在同一Web应用程序上的发布请求)时,我得到了一个ipv6地址0:0:0:0:0:0:0:0:1

我使用相同的代码来获取用户ip:

ServletRequestAttributes att = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
att.getRequest().getRemoteAddr();

问题是我使用了一个签名,该签名使用ip地址来确保用户可以上传文件(由于使用Flash进行上传时会话丢失的错误),并且当我使用Ajax或通过Flash发布时,ip地址会更改。

有什么问题,如何获得相同的ip格式?

谢谢


阅读 290

收藏
2020-12-03

共1个答案

一尘不染

您可以通过使用此标志启动服务器来修复它

-Djava.net.preferIPv4Stack=true
2020-12-03