我有一个spring boot数据rest api。我试图获取请求的IP地址。我将HttpServletRequest bean注入我创建的MediaEventHandler中,以便在创建事件之前和之后处理。在之前的create方法中,我调用了httpRequestServlet.getRemoteAddr()。
现在,当我坚持使用Media实体时,它似乎填充了从我调用getRemoteAddr()获得的ip。但是,无论我是在本地计算机上还是在aws上运行应用程序,ip地址始终是33.3.2.22。
任何想法为什么会这样?
答案 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,但我相信这是您可以做的最好的。