2016-09-18 55 views
0

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

现在,当我坚持媒体实体,似乎填充从我的调用getRemoteAddr()获得的IP。但是,无论我在本地机器上还是在aws上运行应用程序,IP地址始终为33.3.2.22。

任何想法,为什么会这样?

回答

0

您可能正在获取默认网关的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,但我相信这是你能做的最好的。

+0

嗨。是的,调用httpRequestServlet.getRemoteAddr()是在api(在服务器上)中进行的。我知道你说关于获得相同的IP,因为我使用同一个客户端,但是...... 33.3.2.22肯定不是我的客户端的IP。据我所知,我得到了我想要的,除了IP以某种方式显示为33.3.2.22而不是我的实际IP。任何想法,为什么它会不同? – gezinspace

+0

谢谢。这是一个计算领域,我的知识有点薄弱;我不会猜到这一点。我在工作,但是当我回到家时,我会向你确认情况是否如此。谢谢! :) – gezinspace