ログインしたユーザーのIPアドレスをwebApplicationに印刷しようとしています。 IPアドレス192.168.10.120:8080/WebApplication
を使用してユーザーが別のPC(Webアプリケーションが私のPCで実行されているため、同じネットワークの下にある)から接続すると、コードrequest.getRemoteAddr()
またはrequest.getLocalAddr())
が返されます彼のIPアドレス。 Webアプリケーションを実行するPCからログインすると、このIPアドレス0:0:0:0:0:0:0:1が取得されます。
何故ですか?そして、これらのコマンドの違いは何ですか(どちらを使用する必要がありますか?)
あなたの場合、ローカルマシンでアクセスしようとしているので、その値を返します。しかし、あなたの友人の一人にアクセスさせてください、そうすればgetRemoteAddr
で期待される結果を受け取るでしょう
Javadocから:
getRemoteAddr -リクエストを送信したクライアントまたは最後のプロキシのIPアドレスを返します
getLocalAddr -要求が受信されたインターフェースのIPアドレスを返します。
IPv4からIPv6に移行すると、ループバックアドレス(localhost)を_0:0:0:0:0:0:0:1
_から_127.0.0.1
_に変更しているため、このアドレスを取得しています。
機能に関して:
getRemoteAddr()
はクライアントIPを返します
getLocalAddr()
は、アプリケーションが実行されているサーバーのIPを返します
getRemoteAddr() は目的を解決しますが、クライアントがプロキシの背後にある場合、プロキシのIPアドレスを取得します:
クライアントまたはリクエストを送信した最後のプロキシのインターネットプロトコル(IP)アドレスを返します。
getLocalAddr ()は、アプリケーションが実行されているサーバーのIPを返します。