This 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:
<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 =3D> qw(OK DECLINED);
my $debug =3D 1;
sub handler {
my $f =3D shift;
# if we have already seen this do nothing
return Apache2::Const::DECLINED if $f->ctx;
# get headers
my $headers_in =3D $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 =3D $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
------_=_NextPart_001_01C9F927.7E157A1A
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii">
<META content=3D"MSHTML 6.00.6000.16809" name=3DGENERATOR></HEAD>
<BODY>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN =
class=3D910094901-30062009>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:</SPAN></SPAN></SPAN></DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN =
class=3D910094901-30062009><FONT
face=3DArial size=3D2></FONT></SPAN></SPAN></SPAN> </DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN
class=3D910094901-30062009><IfModule mod_proxy.c><BR>ProxyRequests =
On</SPAN></SPAN></SPAN></DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN
class=3D910094901-30062009><Proxy *><BR> Order
deny,allow<BR> Deny from all<BR> =
Allow from
all<BR></Proxy></SPAN></SPAN></SPAN></DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN
class=3D910094901-30062009></IfModule></SPAN></SPAN></SPAN></DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN =
class=3D910094901-30062009><FONT
face=3DArial size=3D2></FONT></SPAN></SPAN></SPAN> </DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN =
class=3D910094901-30062009>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</SPAN></SPAN></SPAN></DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN =
class=3D910094901-30062009><FONT
face=3DArial size=3D2></FONT></SPAN></SPAN></SPAN> </DIV>
<DIV><SPAN><SPAN class=3D891515216-14072008><SPAN =
class=3D910094901-30062009><FONT
face=3DArial>PerlModule company::AddHeader<BR>PerlInputFilterHandler
company::AddHeader </FONT></DIV>
<DIV><FONT face=3DArial></FONT> </DIV>
<DIV><SPAN class=3D910094901-30062009></SPAN><FONT face=3DArial><FONT =
size=3D2>a<SPAN
class=3D910094901-30062009>nd I wrote the following example
handler</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN
class=3D910094901-30062009></SPAN></FONT></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>package
company::AddHeader;</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>use
strict;<BR>use warnings;</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>use
Apache2::Filter ();<BR>use Apache2::RequestRec ();<BR>use APR::Table
();</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>use
Apache2::Const -compile =3D> qw(OK =
DECLINED);</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>my $debug =3D
1;</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>sub handler
{<BR> my $f =3D shift;</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009> # if we
have already seen this do nothing<BR> return =
Apache2::Const::DECLINED if
$f->ctx;</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009> # get
headers<BR> my $headers_in =3D
$f->r->headers_in();</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009> # add
header field<BR> $headers_in->set("Message","Hi =
Mom");<BR>
$f->r->headers_in($headers_in);</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>
if($debug)<BR> {<BR> open FILE, =
">>/tmp/out.log"
or die $!;<BR> foreach my $key (keys
%{$headers_in})<BR> =
{<BR> print
FILE "$key =3D $headers_in->{$key}\n";<BR>
}<BR> close FILE;<BR> =
}</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>
$f->ctx(1);</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009> return
Apache2::Const::OK;<BR>}<BR>1;<BR></SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>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?</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN
class=3D910094901-30062009></SPAN></FONT></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN =
class=3D910094901-30062009>I am pretty
sure I am missing something very simple, but have spent a day trying to =
figure
out what it is. Any ideas?</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN
class=3D910094901-30062009></SPAN></FONT></FONT> </DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN
class=3D910094901-30062009>cheers,</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN
class=3D910094901-30062009>Brandon</SPAN></FONT></FONT></DIV>
<DIV><FONT face=3DArial><FONT size=3D2><SPAN
class=3D910094901-30062009> </DIV></SPAN></FONT>
<DIV><FONT =
size=3D2></FONT><BR></DIV></FONT></SPAN></SPAN></SPAN></BODY></HTML>
------_=_NextPart_001_01C9F927.7E157A1A--
