java - 在 apache/tomcat 设置 (mod_jk) 后面的 Vaadin 中获取 IP 地址总是给出服务器的 IP 地址

标签 java apache tomcat vaadin vaadin8

使用推荐的 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/

相关文章:

java - 检查字符串中单词的值

java - 没有为 Cucumber runner 注入(inject) Spring 依赖项

Apache http : redirect to https:

apache - 在 Apache htaccess 中有条件地设置 header

Apache 配置读取 header 值

javascript - 从 Tomcat url 中删除文件夹名称

http - 如何禁用 Tomcat 5.5.27 的 HTTP 方法

web-services - 如何使用网络服务创建树?

java - 在servlet中调用java类

java - 正则表达式查找包含在两个括号之间的字符串