
allgood at numerate
Jun 29, 2009, 7:07 PM
Views: 591
Permalink
|
|
trying to add header field using PerlInputFilterHandler to proxy packets
|
|
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
|