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