HTTP_X_FORWARDED_FOR と REMOTE_ADDR の違い Request.ServerVariables には HTTP_X_FORWARDED_FOR 変数はなく、REMOTE_ADDR のみですが、どちらの変数もクライアント IP アドレスを取得できます。それでは、それらの違いは何でしょうか?
ASP で Request.ServerVariables(REMOTE_ADDR) を使用してクライアントの IP アドレスを取得します。ただし、クライアントがプロキシ サーバーを使用してアクセスする場合、取得されるのは実際のクライアントの IP アドレスではなく、プロキシ サーバーの IP アドレスです。プロキシ サーバー経由でクライアントの実際の IP アドレスを取得するには、Request.ServerVariables(HTTP_X_FORWARDED_FOR) を使用して読み取ります。
ただし、すべてのプロキシ サーバーが Request.ServerVariables(HTTP_X_FORWARDED_FOR) を使用してクライアントの実際の IP を読み取ることができるわけではないことに注意してください。このメソッドで読み取られる IP の一部は依然としてプロキシ サーバーの IP です。
もう 1 つの注意点は、クライアントがプロキシ サーバー経由でアクセスしない場合、Request.ServerVariables (HTTP_X_FORWARDED_FOR) で取得される値が空になることです。したがって、プログラムでこのメソッドを使用したい場合は、次のように実行できます。
...
userip = Request.ServerVariables(HTTP_X_FORWARDED_FOR)
userip = の場合、userip = Request.ServerVariables(REMOTE_ADDR)
...
つまり、クライアントがプロキシ サーバーを通過する場合は、HTTP_X_FORWARDED_FOR の値が取得され、クライアントがプロキシ サーバーを通過しない場合は、REMOTE_ADDR の値が取得されます。
もちろん、上記のアプローチは万能ではありません。3 番目の段落で述べたように、ユーザーがレベル 2 プロキシ、レベル 3 プロキシ、レベル 4 プロキシを使用しているかどうかを考慮しましたか。