代码之家  ›  专栏  ›  技术社区  ›  Guss

获取应用服务器下的真实(虚拟)主机名

  •  2
  • Guss  · 技术社区  · 16 年前

    我有一个应用程序在jetty下运行,我希望应用程序返回自引用绝对URL(在生成RSS提要时,客户机必须能够在没有“当前URL”上下文的情况下工作)。

    问题是,我不知道应用程序将在哪个主机名下部署,很可能它将部署在一个虚拟主机环境中,其中多个主机名映射到同一IP地址。我试过用 HttpServletRequest.getLocalName() ,但返回接收请求的IP地址(通常在本地主机文件中设置)的解析主机名[1],而不是来自HTTP请求中指定的客户端URL的主机名。

    基本上我想得到CGI下的环境变量 SERVER_NAME 但它看起来不像Java API提供的。如有任何帮助,我们将不胜感激。

    [1]只有在我运气好的情况下-在某些设置中,它只返回IP地址。

    1 回复  |  直到 16 年前
        1
  •  3
  •   erickson    16 年前

    使用 ServletRequest.getServerName() 从“主机”头中获取虚拟主机名。这相当于CGI的 SERVER_NAME 变量。

    推荐文章