java - 如何枚举指向我的 Tomcat/SpringMVC 实例的非本地主机、非 127.0.0.1 IP 地址/域?

标签 java spring-mvc tomcat url localhost

在我运行在 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/

相关文章:

java - 实现复合模式的递归函数?

java - 属性 'passwordEncoder' 在 Spring Security 中抛出异常

java - 覆盖 Tomcat 基本身份验证

java - 用于获取 success.jsp 页面上的值的 ModelDriven 接口(interface)

java - 编写带有外部节点的xml文件

java - 如果从计划作业调用,Spring Boot 存储库不会保存到数据库

java - 如何像在 Java EE 6 中一样在 Spring 3 中获取实体管理器

tomcat - 为什么我不能访问像 "xx.jsp"(/webapps/root/xx.jsp) 这样的文件?

spring-mvc - 工件部署期间出错。详见服务器日志。(ubuntu16.04+intellij2016.3.4+tomcat8.5.13)

java - 有什么方法可以在 Android 或 Java 中更改 WAV(或 MP3)的采样频率?