2013-03-28 135 views
0

对Apache 1.3使用mod_perl。客户端的 地址获得头X - 转发,因为,HTTP_X_FORWARDED_FO,或环境变量$ ENV {} REMOTE_ADDR:使用http请求标头中的地址192.168.0.0网络的IP地址

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

预期您正在明确查看HTTP_X_FORWARDED_FOR标题(如果由所有代理正确设置的话)将包含所有中间IP和原始客户端IP。由于大多数人在本地家庭网络中,大多数始发IP位于192.168.xx.xx范围内。