JSP ページでクライアントの IP アドレスを取得し、データベースに保存したいと考えています。
Jspページで次のコードを使用してIPアドレスをフェッチしていますが、サーバーのIPアドレスが表示されています。
<input type="hidden" name="ipaddress" value="<%=request.getRemoteAddr()%>"/>
通常、メソッドServletRequest.getRemoteAddr()
(またはgetRemoteHost()
およびgetRemotePort()
) は実際のクライアントの詳細を返す必要があります。ただし、プロキシまたは別のサーブレット エンジンを介してルーティングされる場合は、それらのマシンの IP を取得します。これらの状況に取り組むには、以下の操作を試すことができます
request.getHeader("VIA") --> Gateway
request.getHeader("X-FORWARDED-FOR")--> IPaddress
ただし、リクエストがクライアントから直接送信された場合、これは null を返す可能性があります。有効なデータを取得するために、いくつかの追加条件を使用して状況を処理できます。
オブジェクトを使用してサーバー側からクライアント IP アドレスを取得しようとすることrequest
は、決して信頼できる方法ではありません。
最も信頼性の高いものは、ActiveX、アプレット、Javascript などを使用して、クライアント側で実行される傾向があります。ただし、これにはいくつかの課題もあります。この質問への回答を確認して、自分が何に直面しているのかを確認してください (これは、その中で私が好む回答です)