0

ジェネリッククラスでこれを持っている場所もあります。

public static String getRequestIp (HttpServletRequest request){
  String ipaddr = request.getHeader("X-FORWARDED-FOR");
  if (ipaddr == null)ipaddr = request.getRemoteAddr();
  return ipaddr;
}

リクエストごとにそのメソッドを呼び出し、特定の瞬間に mysql データベースにレコードを挿入します。

ほとんどの場合、正常に動作し、右側のフィールドに有効な IP アドレスを持つすべてのリクエストのレコードを確認できます。しかし、IP があるべき場所にこのようなものがある場合があります。"unknown, 93.186.30.120" または "10.0.1.169, 186.38.84.3" Apache はフロントでポート 80 をリッスンし、ポート 8081 をリッスンする Tomcat へのプロキシとして使用されます。 80以外のポートで。前もって感謝します。

4

2 に答える 2

1

X-FORWARDED-FOR HTTP ヘッダーの形式は次のとおりです。

X-Forwarded-For: client, proxy1, proxy2, ...

したがって

unknown, 93.186.30.120 

不明なローカル アドレスから発信された、93.186.30.120 のプロキシからの要求を意味します。と

10.0.1.169, 186.38.84.3

同様に、186.38.84.3 プロキシからのリクエスト、ローカル IP 10.0.1.169 からのリクエストを意味します

于 2012-07-01T21:11:31.323 に答える
1

「不明な」X-Forwarded-For エントリは、元のクライアント IP アドレスをフィールドに挿入しないように構成されたプロキシによって挿入された可能性があります。

たとえば、Squid 設定ディレクティブ forwarded_for にはさまざまなオプションがあり、「on」に設定すると、クライアントの IP アドレスが追加されます。「off」に設定すると、「X-Forwarded-For: unknown」と表示されます。

于 2014-09-24T09:01:31.140 に答える