使用推荐的 Vaadin 代码在前面有 apache 后面有 tomcat 的设置中获取 IP 地址,使用 mod_jk 总是会导致获取服务器的 IP 地址:
Page.getCurrent().getWebBrowser().getAddress();
我捕获了 this snippet这解释了这是因为连接来自 Apache,这是有道理的,但该解决方案也不起作用。
因此我的问题是,当 tomcat 服务器使用 mod_jk 在 apache 后面时,如何在 Vaadin 8 中获取实际用户的 IP 地址?
最佳答案
String header = VaadinService.getCurrentRequest().getHeader("x-forwarded-for");
if(header == null || "".equals(header)
return "";
return InetAddress.getByName(header).getHostAddress();
最好进行空字符串检查,以防出现任何 NullPointerException
问题。
关于java - 在 apache/tomcat 设置 (mod_jk) 后面的 Vaadin 中获取 IP 地址总是给出服务器的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49218261/