JavaでリクエストのIPアドレスを取得する方法は何ですか?
JavaでリクエストのIPアドレスを取得するには、次のコードを使用できます:
import javax.servlet.http.HttpServletRequest;
public String getIpAddress(HttpServletRequest request) {
String ipAddress = request.getHeader("X-Forwarded-For");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
return ipAddress;
}
このコードは、HTTPヘッダ情報を確認して、リクエストのIPアドレスを取得しようとします。最初に、「X-Forwarded-For」ヘッダからIPアドレスを取得しようとし、これは一般的なプロキシサーバの設定で、実際のクライアントのIPアドレスが取得できます。取得できない場合は、「Proxy-Client-IP」と「WL-Proxy-Client-IP」ヘッダからIPアドレスを取得しようとします。最後に、IPアドレスを取得できない場合は、request.getRemoteAddr()メソッドを使用して最終的なIPアドレスを取得します。
留意してください、異なるアプリケーションサーバーやプロキシサーバーの設定によってはこのコードがすべての環境で適用されない可能性があります。お使いの状況に合わせて調整が必要かもしれません。