You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by J Amuse <ja...@gmail.com> on 2008/04/23 11:52:05 UTC

Rewrite HTTP Headers

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.