У меня есть приложение Tomcat, которое подается из нескольких доменов. Предыдущие разработчики построили метод для возврата URL-адреса приложения (см. Ниже). В методе они запрашивают имя сервера (request.getServerName()
), которое соответствующим образом возвращает Имя_сервера из файла httpd.conf.
Однако я не хочу этого. То, что я хочу, - это имя хоста, которое браузер отправил на запрос, т.е. Какой бы домен, к которому браузер обращается к приложению.
Я попробовал getHeader("Host")
, но это все еще возвращает Имя_сервера в файле httpd.conf.
Вместо request.getServerName()
, что я должен использовать, чтобы получить имя сервера, на которое браузер отправил запрос?
Например:
- Имя_сервера в 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 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();
}
Спасибо заранее!