spring boot HttpServletRequest getRemoteAddr()始终返回33.3.2.22

时间:2016-09-18 21:50:49

标签: spring servlets spring-boot ip

我有一个spring boot数据rest api。我试图获取请求的IP地址。我将HttpServletRequest bean注入我创建的MediaEventHandler中,以便在创建事件之前和之后处理。在之前的create方法中,我调用了httpRequestServlet.getRemoteAddr()。

现在,当我坚持使用Media实体时,它似乎填充了从我调用getRemoteAddr()获得的ip。但是,无论我是在本地计算机上还是在aws上运行应用程序,ip地址始终是33.3.2.22。

任何想法为什么会这样?

1 个答案:

答案 0 :(得分:1)

您可能正在获取默认网关的IP。看看这个:https://www.mkyong.com/java/how-to-get-client-ip-address-in-java/

//is client behind something? 
String ipAddress = request.getHeader("X-FORWARDED-FOR"); 
if (ipAddress == null) {     
    ipAddress = request.getRemoteAddr(); 
}

仍然无法保证您将获得真正的客户端IP,但我相信这是您可以做的最好的。