首页 > 解决方案 > 如何将 IPv4 绑定到 Maven 项目中的嵌入式 tomcat?

问题描述

当我执行

request.getRemoteAddr()

我将在 IPv6 中收到 0:0:0:0:0:0:0:1 的 localhost。但我需要的是 127.0.0.1 或通常只有 IPv4。如何在我的 maven 项目中实现嵌入 tomcat 的功能?

如果我执行request.getHeader("X-Forwarded-For"),我会得到 IPv4 吗?因为在本地记录它时,我收到了一个 NULL ..

标签: javamaventomcatip

解决方案


你在这里为失败做准备。获得127.0.0.1远程主机的唯一方法是提供 IPV4,而不提供IPV6。虽然可用的 IPV4本地主机地址的数量不会很快用完,但公共 IPV4 地址的数量会用完,建议也能够与 IPV6 通信。任何通过 IPV6 的连接都会自然地显示其 IPV6 地址。

当您将自己限制为仅提供 IPV4 地址时,您甚至可能无法接收寻址为http://localhost或的连接http://localhost:8080,因为在许多当前操作系统上,localhost 表示::1IPV6 地址。如果你不在那里听,浏览器将无法连接,除非它http://127.0.0.1(:8080)明确连接。

咬紧牙关,更改您的本地逻辑以适应 IPV4IPV6,然后您就完成了。在 tomcat 方面,您无法控制连接浏览器使用的地址。浏览器是。

X-Forwarded-For头由代理插入。如果您没有代理(这在 localhost 连接中很常见),它就不会存在(如您所见)。如果有代理,它将包含原始服务器的字符串表示形式——可能是 IPV4 地址(如果通过 IPV4 连接)、IPV6 地址甚至是完全限定的域名。此标头与您要实现的目标无关。


推荐阅读