trying to add header field using PerlInputFilterHandler to proxy packets
am 30.06.2009 04:07:15 von Brandon AllgoodThis is a multi-part message in MIME format.
------_=_NextPart_001_01C9F927.7E157A1A
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
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:
=20
ProxyRequests On
Order deny,allow
Deny from all
Allow from all
=20
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
=20
PerlModule company::AddHeader
PerlInputFilterHandler company::AddHeader=20
=20
and I wrote the following example handler
=20
package company::AddHeader;
=20
use strict;
use warnings;
=20
use Apache2::Filter ();
use Apache2::RequestRec ();
use APR::Table ();
=20
use Apache2::Const -compile =3D> qw(OK DECLINED);
=20
my $debug =3D 1;
=20
sub handler {
my $f =3D shift;
=20
# if we have already seen this do nothing
return Apache2::Const::DECLINED if $f->ctx;
=20
# get headers
my $headers_in =3D $f->r->headers_in();
=20
# add header field
$headers_in->set("Message","Hi Mom");
$f->r->headers_in($headers_in);
=20
if($debug)
{
open FILE, ">>/tmp/out.log" or die $!;
foreach my $key (keys %{$headers_in})
{
print FILE "$key =3D $headers_in->{$key}\n";
}
close FILE;
}
=20
$f->ctx(1);
=20
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?
=20
I am pretty sure I am missing something very simple, but have spent a
day trying to figure out what it is. Any ideas?
=20
cheers,
Brandon
=20
------_=_NextPart_001_01C9F927.7E157A1A
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
charset=3Dus-ascii">
running an apache server 2.2.3 on CentOS 5.2. I have turned on the =
proxy=20
with the following lines from my apache.conf:
ProxyRequests =
On
Order=20
deny,allow
Deny from all
=
Allow from=20
all
</Proxy>
like to add a header field to all requests =
going through the=20
proxy. After doing a bunch of reading it seemed that setting=20
up a PerlInputFilterHandler was the right thing to do. I =
added the=20
following lines to the apache.conf
PerlInputFilterHandler=20
company::AddHeader
handler
company::AddHeader;
strict;
use warnings;
Apache2::Filter ();
use Apache2::RequestRec ();
use APR::Table=20
();
Apache2::Const -compile =3D> qw(OK =
DECLINED);
1;
{
my $f =3D shift;
have already seen this do nothing
return =
Apache2::Const::DECLINED if=20
$f->ctx;
headers
my $headers_in =
$f->r->headers_in();
header field
$headers_in->set("Message","Hi =
Mom");
=20
$f->r->headers_in($headers_in);
if($debug)
{
open FILE, =
">>/tmp/out.log"=20
or die $!;
foreach my $key (keys=20
%{$headers_in})
=
{
print=20
FILE "$key =3D $headers_in->{$key}\n";
=20
}
close FILE;
=
}
$f->ctx(1);
Apache2::Const::OK;
}
1;
see, if debugging is turned on the headers are written to the file=20
/tmp/out.log. The contents of out.log contains the new header, but =
the=20
requests being forwarded by the proxy don't seem to be altered. =
Why is the=20
new header not being sent?
sure I am missing something very simple, but have spent a day trying to =
figure=20
out what it is. Any ideas?
------_=_NextPart_001_01C9F927.7E157A1A--