IP请求头中的地址为192.168.0.0的IP地址

时间:2013-03-28 07:22:25

标签: apache http http-headers ip mod-perl

将mod_perl用于Apache 1.3。 客户端的地址获取标头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。

1 个答案:

答案 0 :(得分:1)

期望您明确查看HTTP_X_FORWARDED_FOR标头(如果在某种程度上由所有代理正确设置)将包含所有中间IP和原始客户端IP。由于大多数人都在本地家庭网络中,因此大多数原始IP都在192.168.xx.xx范围内。