7

JSPページでクライアントのIPアドレスを取得する必要があります。私は次の方法を試しました:

request.getRemoteAddr()
request.getHeader("X_FORWARDED_FOR")
request.getHeader("HTTP_CLIENT_IP")
request.getHeader("WL-Proxy-Client-IP")
request.getHeader("Proxy-Client-IP")
request.getHeader("REMOTE_ADDR")

ただし、これらの方法のいずれも、目的のIPアドレスを返しませんでした。JSPページでクライアントのIPアドレスを取得するにはどうすればよいですか?

4

4 に答える 4

13

クライアントのIPアドレスを取得するために、次の方法を使用しました

<%   String ip = request.getHeader("X-Forwarded-For");  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("Proxy-Client-IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("WL-Proxy-Client-IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("HTTP_CLIENT_IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getRemoteAddr();  
        }
        %>

これがお役に立てば幸いです。フィードバックを残してください。

于 2014-03-19T10:32:45.477 に答える
6
<%
out.print( request.getRemoteAddr() );
out.print( request.getRemoteHost() );
%>

クライアントがプロキシの背後にある場合、実際のクライアント IP を取得できない場合があります。クライアントではなく、プロキシの IP を取得します。ただし、プロキシは、要求元のクライアント IP を特別な HTTP ヘッダーに含めることができます。

<%
out.print( request.getHeader("x-forwarded-for") );
%>
于 2012-07-27T07:41:59.623 に答える
3

アプリケーション サーバーは、ロード バランサー、プロキシ、または Web サーバーの背後にありますか? ほんの一例です。F5 ロード バランサーは、「rlnclientipaddr」ヘッダーを使用してクライアント IP アドレスを公開します。

request.getHeader("rlnclientipaddr");
于 2012-07-27T07:49:38.307 に答える
0

Apache プロキシのようなリバース プロキシを使用しますか? http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

リバース プロキシ モードで動作する場合 (たとえば、ProxyPass ディレクティブを使用)、mod_proxy_http はオリジン サーバーに情報を渡すためにいくつかの要求ヘッダーを追加します。これらのヘッダーは次のとおりです。

X-Forwarded-For
The IP address of the client.
X-Forwarded-Host
The original host requested by the client in the Host HTTP request header.
X-Forwarded-Server
The hostname of the proxy server.
于 2012-07-27T07:36:25.720 に答える