You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Micah Johnson <ms...@yahoo.com> on 2004/05/03 15:38:26 UTC
[mp2] CONTENT_LENGTH & input filter
Hi,
I'm trying to use a pre-existing CGI script without
modification. I'd like to use an input filter to tack
on something to the POST string. My filter adds the
string, but the CGI sees a CONTENT_LENGTH
environmental variable that corresponds to its
original length. How do I update the CONTENT_LENGTH?
Here's the filter code:
package MyApache::AddConstraint;
use strict;
use warnings;
use base qw(Apache::Filter);
use Apache::Const -compile => 'OK';
use constant BUFF_LEN => 1024;
sub handler : FilterRequestHandler {
my $f = shift;
while ($f->read(my $buffer, BUFF_LEN)) {
$f->print($buffer);
}
my $bparam = "&special=1";
$f->print($bparam);
Apache::OK;
}
1;
The relevant conf is:
<Location /cgi-perl>
SetHandler perl-script
PerlHandler ModPerl::PerlRun
Options ExecCGI
PerlSendHeader On
</Location>
PerlModule MyApache::AddConstraint
<Location /cgi-perl/test>
PerlInputFilterHandler MyApache::AddConstraint
</Location>
I've tried setting %ENV in my filter, setting
CONTENT_LENGTH with $f->r->subprocess_env, and using
headers_out->set('Content-Length'). In the first two
cases, I see no effect, while the last applies to the
length of the entire request, not just the POST
string.
Any help is appreciated.
Thanks,
Micah
__________________________________
Do you Yahoo!?
Win a $20,000 Career Makeover at Yahoo! HotJobs
http://hotjobs.sweepstakes.yahoo.com/careermakeover
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Re: [mp2] CONTENT_LENGTH & input filter
Posted by Stas Bekman <st...@stason.org>.
Micah Johnson wrote:
> Hi,
>
> I'm trying to use a pre-existing CGI script without
> modification. I'd like to use an input filter to tack
> on something to the POST string. My filter adds the
> string, but the CGI sees a CONTENT_LENGTH
> environmental variable that corresponds to its
> original length. How do I update the CONTENT_LENGTH?
You can do that only in the Connection level filter, Request level filter is
too late.
> I've tried setting %ENV in my filter, setting
> CONTENT_LENGTH with $f->r->subprocess_env, and using
> headers_out->set('Content-Length'). In the first two
^^^^
That's headers *out* (==response), you want headers_in. I haven't tried that,
but it may work in any phase before the response handler (instead of
connection filter).
--
__________________________________________________________________
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org http://ticketmaster.com
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html