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 回答