I am running an apache server 2.2.3 on CentOS 5.2.  I have turned on the
proxy with the following lines from my apache.conf:
 
<IfModule mod_proxy.c>
ProxyRequests On
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from all
</Proxy>
</IfModule>
 
I would like to add a header field to all requests going through the
proxy.  After doing a bunch of reading it seemed that setting up a
PerlInputFilterHandler was the right thing to do.  I added the following
lines to the apache.conf
 
PerlModule company::AddHeader
PerlInputFilterHandler company::AddHeader 
 
and I wrote the following example handler
 
package company::AddHeader;
 
use strict;
use warnings;
 
use Apache2::Filter ();
use Apache2::RequestRec ();
use APR::Table ();
 
use Apache2::Const -compile => qw(OK DECLINED);
 
my $debug = 1;
 
sub handler {
  my $f = shift;
 
  # if we have already seen this do nothing
  return Apache2::Const::DECLINED if $f->ctx;
 
  # get headers
  my $headers_in = $f->r->headers_in();
 
  # add header field
  $headers_in->set("Message","Hi Mom");
  $f->r->headers_in($headers_in);
 
  if($debug)
  {
    open FILE, ">>/tmp/out.log" or die $!;
    foreach my $key (keys %{$headers_in})
    {
      print FILE "$key = $headers_in->{$key}\n";
    }
    close FILE;
  }
 
  $f->ctx(1);
 
  return Apache2::Const::OK;
}
1;

As you can see, if debugging is turned on the headers are written to the
file /tmp/out.log.  The contents of out.log contains the new header, but
the requests being forwarded by the proxy don't seem to be altered.  Why
is the new header not being sent?
 
I am pretty sure I am missing something very simple, but have spent a
day trying to figure out what it is.  Any ideas?
 
cheers,
Brandon
 


Reply via email to