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