我有一個Tomcat應用程序正在從多個域提供服務。以前的開發人員構建了一個返回應用程序URL的方法(請參見下文)。在該方法中,它們請求服務器名稱(request.getServerName()
),其適當地從httpd.conf文件返回服務器名稱。Tomcat:getHeader(「主機」)與getServerName()
但是,我不想那樣。我想要的是瀏覽器發送請求的主機名,即瀏覽器從哪個域訪問應用程序。
我試過getHeader("Host")
,但仍返回原的httpd.conf文件服務器名集。
而不是request.getServerName()
,我應該用什麼來獲取瀏覽器發送請求的服務器名稱?
例如:
- 服務器名在的httpd.conf:www.myserver.net
- 用戶訪問上www.yourserver.net
我的Tomcat應用需要退貨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();
}
提前感謝!
Tomcat甚至無法看到'httpd.conf'文件,更不用說從它返回一個值。 Tomcat從請求中獲取服務器主機。 – EJP