Tomcat :getHeader («Хост» )и getServerName()

У меня есть приложение Tomcat, которое обслуживается из нескольких доменов. Предыдущие разработчики создали метод для возврата URL-адреса приложения (, см. ниже ). В методе они запрашивают имя сервера (request.getServerName()), которое, соответственно, возвращает ServerName из файла httpd.conf .

Однако я не хочу этого. Что мне нужно, так это имя хоста, на которое браузер отправил запрос, то есть какой бы домен браузер не обращался к приложению.

Я пробовал getHeader("Host"), но он по-прежнему возвращает ServerName , установленный в файле httpd.conf .

Что мне следует использовать вместо request.getServerName()для получения имени сервера, на который браузер отправил запрос?

Например,:

  • ServerName в httpd.conf:www.myserver.net
  • Пользователь получает доступ к приложению Tomcat на www.yourserver.net

Мне нужно вернуться www.yourserver.netНЕwww.myserver.net . Кажется, что вызов request.getServerName()возвращает только www.myserver.net

/**
 * Convenience method to get the application's URL based on request
 * variables.
 * 
 * @param request the current request
 * @return URL to application
 */
public static String getAppURL(HttpServletRequest request) {
    StringBuffer url = new StringBuffer();
    int port = request.getServerPort();
    if (port < 0) {
        port = 80; // Work around java.net.URL bug
    }
    String scheme = request.getScheme();
    url.append(scheme);
    url.append("://");
    url.append(request.getServerName());
    if (("http".equals(scheme) && (port != 80)) || ("https".equals(scheme) && (port != 443))) {
        url.append(':');
        url.append(port);
    }
    url.append(request.getContextPath());
    return url.toString();
}

Заранее спасибо!

11
задан f_puras 16 May 2016 в 10:25
поделиться