複数のドメインから提供されている Tomcat アプリがあります。以前の開発者は、アプリケーション URL を返すメソッドを作成しました (以下を参照)。メソッドでは、サーバー名 ( request.getServerName()
) を要求し、適切に、 httpd.confファイルからServerNameを返します。
しかし、私はそれを望んでいません。私が欲しいのは、ブラウザがリクエストを送信したホスト名、つまりブラウザがアプリケーションにアクセスしているドメインです。
を試しgetHeader("Host")
ましたが、それでもhttpd.confファイルに設定されたServerNameが返されます。
の代わりにrequest.getServerName()
、ブラウザがリクエストを送信したサーバー名を取得するには何を使用すればよいですか?
例えば:
- httpd.confの ServerName : www.myserver.net
- ユーザーがwww.yourserver.netの Tomcat アプリにアクセスする
www.myserver.netではなくwww.yourserver.net を返す必要があります。呼び出しはwww.myserver.netのみを返すようです request.getServerName()
/**
* 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();
}
前もって感謝します!