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