For some reason, CGI.pm (2.93) does not seem to parse POST data within a PerlAuthenHandler. For example, the following:

sub handler {
   my $r = shift;
   my $q = new CGI($r);
   my @params = $q->param;
   $r->server->log->error("handler params are " . join "::", @params);
   return Apache::OK;
}

logs the paramter names correctly if the request is a GET, but not if a POST. The same code works fine within an Apache::Registry script, which I assume will have the same behavior as a PerlResponseHandler. I also attempted both the x-www-form-urlencoded and multipart/form-data POST types and neither worked.

Am I missing something that mod_perl is not doing till the response phase, like setting up STDIN? I thought that this might have had something to do with an earlier thread (http://marc.theaimsgroup.com/?t=104992954600005&r=1&w=2), however I also tried adding:

$r->subprocess_env;
Apache->request($r);

to the handler to no avail.

Thanks
-Mike

Apache/2.0.44 (Gentoo/Linux) mod_perl/1.99_09 Perl/v5.8.0 CGI.pm/2.93

<Directory /home/*/public_html/protected>
 <FilesMatch "\.pl$">
   AllowOverride None
   Options +ExecCGI

   SetHandler perl-script
   PerlAuthenHandler Apache::MyAuth::handler
   AuthType Cookie
   AuthName MyPrivateStuff
   require valid-user

   PerlResponseHandler ModPerl::Registry
 </FilesMatch>
</Directory>





Reply via email to