28

Flash を使用してファイルをアップロードする Spring/GWT を使用した Web アプリを作成しました。

GWT で ajax リクエストを送信し、ユーザーの IP アドレスを取得しようとすると、127.0.0.1 のような ipv4 アドレスを取得します。

しかし、フラッシュを使用してファイルをアップロードすると (および同じ webapp での投稿要求)、ipv6 アドレス 0:0:0:0:0:0:0:1 が取得されます。

同じコードを使用して、次のユーザー IP を取得します。

ServletRequestAttributes att = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
att.getRequest().getRemoteAddr();

問題は、IPアドレスを使用する署名を使用して、ユーザーがファイルをアップロードできることを確認し(フラッシュでアップロードするとセッションが失われるというバグのため)、ajaxまたはフラッシュ経由で投稿するとIPアドレスが変更されることです。

何が問題で、どうすれば同じ ip 形式を取得できますか?

ありがとう

4

3 に答える 3

53

このフラグでサーバーを起動することで修正できます

-Djava.net.preferIPv4Stack=true
于 2014-02-21T00:42:38.890 に答える
12

これは、ブラウザに入力した名前に ipv4 と ipv6 の両方のアドレスが含まれているためです。ブラウザは ipv4 の使用を選択し、フラッシュは ipv6 の使用を選択します。サーバー側でそれについてできることは何もありません(変換する方法はありません)。
ただし、DNS を変更して、名前に ipv4 または ipv6 のいずれか 1 つのアドレスのみを持たせることができます。名前 (localhost) ではなく、文字通りの IP アドレス (127.0.0.1) で接続することもできます。

于 2010-06-25T14:37:31.680 に答える