我有一个在 Jetty 下运行的应用程序,我希望该应用程序返回自引用的绝对 URL(在生成 RSS 提要时,客户端必须能够在没有“当前 URL”上下文的情况下工作)。
问题是我事先不知道应用程序将部署在哪个主机名下,而且很可能它将部署在多个主机名映射到同一个 IP 地址的虚拟主机环境中。我尝试使用HttpServletRequest.getLocalName()
,但它返回解析的主机名 [1] 用于接收请求的 IP 地址(通常是在本地主机文件中设置的),而不是客户端在 URL 中指定的主机名HTTP 请求。
基本上我想得到 CGI 下的环境变量SERVER_NAME
,但它看起来不像 Java API 提供了这个。任何帮助将不胜感激。
[1] 仅在我幸运的情况下 - 在某些设置中它只返回 IP 地址。