Java 如何枚举指向Tomcat/SpringMVC实例的非本地主机、非127.0.0.1 IP地址/域?
在运行于Tomcat的spring应用程序中,我有一个API,它通过SMS向用户发送链接,以验证电话号码。我的生产服务器有一个公共IP和域名,反映在以下代码中:Java 如何枚举指向Tomcat/SpringMVC实例的非本地主机、非127.0.0.1 IP地址/域?,java,spring-mvc,tomcat,url,localhost,Java,Spring Mvc,Tomcat,Url,Localhost,在运行于Tomcat的spring应用程序中,我有一个API,它通过SMS向用户发送链接,以验证电话号码。我的生产服务器有一个公共IP和域名,反映在以下代码中: context.getRequestURL().toString().replace(context.getRequestURI(), context.getContextPath()); 因此,基于此生成的URL在生产中将是完美的。但是,当我在本地调试时,链接以本地网络上的其他计算机无法单击的链接开始(阅读通过SMS接收链接的我的手
context.getRequestURL().toString().replace(context.getRequestURI(), context.getContextPath());
因此,基于此生成的URL在生产中将是完美的。但是,当我在本地调试时,链接以本地网络上的其他计算机无法单击的链接开始(阅读通过SMS接收链接的我的手机)
有没有一种方法可以捕获指向运行应用程序的服务器的“非本地主机/127.0.0.1”地址列表,以便在本地调试时通过本地网络访问它?简短回答:没有
详细回答:您可以迭代服务器IP地址,但这对您没有帮助,因为这些可能是本地网络上的内部IP地址(例如10.29.38.47
),并且由防火墙映射(NAT'd),因此从Web上看,服务器的IP地址是不同的(例如192.0.2.5
)
即使您使用诸如查找外部地址之类的服务,它仍然只会提供许多潜在地址中的一个
如果您希望服务器代码能够为自身构建完全限定的URL,则需要在配置文件中指定该URL,并从中读取值。谢谢,我知道这一切,也许我在Q中不够专业。我的意思只是为了本地调试,它足以覆盖除127.x.y.z之外的任何旧本地IP,或本地可访问的除“localhost”之外的任何旧域名。我升级了我的Q top be more Spesific您的代码将使用用于访问webapp的URL来构建合格的URL。如果您不想让它显示
localhost
,则不要使用localhost
访问webapp。例如,如果您的电脑名为MyWorkPC
,请使用http://MyWorkPC:8080/MyApp
。我怎么可能听不到呢!谢谢,我现在可以忘记这个问题了。