Rewrite HTTP Headers

Rewrite HTTP Headers

am 23.04.2008 11:52:05 von J Amuse

------=_Part_16092_25410922.1208944325958
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I wrote a simple module that parses the HTTP response body and updates
certain text. I want the script to be able to parse and manipulate the HTTP
response headers as well. For example add secure and HttpOnly flags to
certain cookies, or add a redirection when a 500 error code is returned. The
code I have so far is:

============================================================ ==========================
package TE::ST;
# $Header:$
use strict;
use warnings;

use Apache2::Filter ();
use Apache2::RequestRec ();
use APR::Table ();

use Apache2::Const -compile => qw(OK);

use constant BUFF_LEN => 9999;
no warnings qw(redefine);

sub handler {
my $f = shift;

while ($f->read(my $buffer, BUFF_LEN)) {
# Disable autocomplete
$buffer =~ s/login method="post"/login method="post"
autocomplete="off" /g;

$f->print($buffer);
}

return Apache2::Const::OK;
}
1;
============================================================ ==========================

when using f->read it appears as though the HTTP headers are not including.
I know err_headers_out should have access to the headers, but is there a way
to force f->read to access the HTTP headers as well? I've seen the set and
add methods for err_headers_out, but can someone point me to a code example
of either editing the HTTP headers or rewriting the server response when
certain response codes are received?

Thanks.

------=_Part_16092_25410922.1208944325958
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I wrote a simple module that parses the HTTP response body and updates
certain text. I want the script to be able to parse and manipulate the
HTTP response headers as well. For example add secure and HttpOnly
flags to certain cookies, or add a redirection when a 500 error code is
returned. The code I have so far is:


============================================================ ==========================

package TE::ST;
# $Header:$
use strict;
use warnings;

use Apache2::Filter ();

use Apache2::RequestRec ();

use APR::Table ();

use Apache2::Const -compile => qw(OK);

use constant BUFF_LEN => 9999;
no warnings qw(redefine);

sub handler {
    my $f = shift;
   
    while ($f->read(my $buffer, BUFF_LEN)) {


        # Disable autocomplete
        $buffer =~ s/login method="post"/login method="post" autocomplete="off" /g;

        $f->print($buffer);
    }

    return Apache2::Const::OK;


}
1;
============================================================ ==========================

when
using f->read it appears as though the HTTP headers are not
including. I know err_headers_out should have access to the headers,
but is there a way to force f->read to access the HTTP headers as
well? I've seen the set and add methods for err_headers_out, but can
someone point me to a code example of either editing the HTTP headers
or rewriting the server response when certain response codes are
received?


Thanks.


------=_Part_16092_25410922.1208944325958--