この記事では、リクエストに基づいてクライアント IP を取得する Java のメソッドを主に紹介します。これは非常に優れており、参考にしてください。
JSP では、クライアントの IP アドレスを取得するメソッドは次のとおりです。 .getRemoteAddr()、このメソッドはほとんどの場合に効果的です。ただし、クライアントの実際の IP アドレスは、Apache や Squid などのリバース プロキシ ソフトウェアを介して取得することはできません。
リバース プロキシ ソフトウェアを使用し、URL http://192.168.1.110:2046/ を URL www.xxx.com/ にリバース プロキシする場合、request.getRemoteAddr() メソッドを使用して取得される IP アドレスは、127.0 です。クライアントの実際の IP ではなく、0.1 または 192.168.1.110。
プロキシを経由した後、クライアントとサービスの間に中間層が追加されるため、サーバーはクライアントのIPを直接取得できず、サーバー側アプリケーションはリクエストを転送してクライアントにアドレスを直接返すことができません。ただし、転送されるリクエストのHTTPヘッダー情報には、X-FORWARDED-FOR情報が付加されます。元のクライアントの IP アドレスと、元のクライアントによって要求されたサーバー アドレスを追跡するために使用されます。 http://www.xxx.com/index.jsp/ にアクセスすると、実際にサーバー上の Index.jsp ファイルにアクセスするのはブラウザではなく、プロキシ サーバーが最初に http://192.110 にアクセスします。 :2046/index.jsp、プロキシサーバーはアクセスした結果をブラウザに返します。index.jspにアクセスするのはプロキシサーバーなので、実際にはindex.jspのrequest.getRemoteAddr()メソッドで取得したIPアドレスになります。クライアントの IP アドレスではなく、プロキシ サーバーの IP アドレスです。
それで、クライアントの実際の IP アドレスを取得する最初のメソッドを取得できます:
public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); }
しかし、www.xxx.com/index.jsp/ にアクセスすると、返される IP アドレスは常に不明です。表示されているのは 127.0.0.1 または 192.168.1.110 であり、http://192.168.1.110:2046/index.jsp にアクセスすると、クライアントの実際の IP アドレスが返されることがあります。それを確認する方法。その理由はイカにあります。デフォルトでは、squid.conf の設定ファイルの forwarded_for 項目は on になっています。 forwarded_for が off に設定されている場合、次のようになります。 JavaのvalueOfとtoString、(String)
3. ASP Dataメソッドのリクエストオブジェクトの5つのクライアント取得メソッドを共有
4.
ASP.NETシステムオブジェクトRequestの詳細説明以上がリクエストに基づいてクライアントIPを取得するJavaのメソッドの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。