0

Apache 1.3 に mod_perl を使用します。クライアントのアドレスは、ヘッダー X-Forwarded-For、HTTP_X_FORWARDED_FO、または環境変数 $ENV{REMOTE_ADDR} を取得します。

sub address {
    my $self = shift;
    unless(defined $self->{address}){
        my $header = $self->apache->headers_in->{'X-Forwarded-For'} ||
            $ENV{HTTP_X_FORWARDED_FOR} || '';
        my ($ip) = $header =~ /([^,\s]+)$/;
        $self->{address} = $ip || $ENV{REMOTE_ADDR} || ''; 
    }
    return $self->{address};
}

問題は、192.168.200.11、192.168.1.156、192.168.0.73 などのアドレスが時々あることです。サーバーはネットワーク192.168.0.0に接続されていませんが。

4

1 に答える 1

1

HTTP_X_FORWARDED_FORヘッダーを明示的に見ているため、(途中ですべてのプロキシによって適切に設定されている場合) すべての中間 IP と元のクライアント IP が含まれていることが予想されます。ほとんどの人はローカル ホーム ネットワークにいるため、ほとんどの発信元 IP は 192.168.xx.xx の範囲にあります。

于 2013-03-28T07:28:04.910 に答える