在我运行在 Tomcat 上的 spring 应用程序中,我有一个 API,它通过 SMS 向用户发送链接以验证电话号码。我的生产服务器有一个公共(public) IP 和域名,反射(reflect)在这段代码中:
context.getRequestURL().toString().replace(context.getRequestURI(), context.getContextPath());
因此基于此生成的URL在生产中将是完美的。然而,当我在本地调试时,链接最终以http://localhost:8080/MyApp 开头。无法从本地网络上的其他计算机点击(阅读我通过短信接收链接的手机)。
有没有一种方法可以捕获指向应用程序恰好运行的服务器的“非本地主机/127.0.0.1”地址列表,以便在本地调试时在本地网络上访问它?
最佳答案
简短回答:不。
长答案:您可以迭代服务器 IP 地址,但这对您没有帮助,因为这些可能是您本地网络上的内部 IP 地址(例如 10.29.38.47
), 并被防火墙映射 (NAT'd), 因此从 Web 上看到的服务器的 IP 地址是不同的 (例如 192.0.2.5
)。
即使您使用 What's My IP Address? 等服务要查找您的外部地址,它仍然只会为您提供众多潜在地址之一。
如果您希望您的服务器代码能够为自己构建一个完全限定的 URL,您需要在配置文件中指定它,并从那里读取值。
关于java - 如何枚举指向我的 Tomcat/SpringMVC 实例的非本地主机、非 127.0.0.1 IP 地址/域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39157584/