http://qs321.pair.com?node_id=308384


in reply to Apache::Filter and Apache::RegistryFilter

It sounds like you are not setting the content-type. Add a call to content-type or apache_send_header() in your Registry script.
  • Comment on Re: Apache::Filter and Apache::RegistryFilter

Replies are listed 'Best First'.
Re: Re: Apache::Filter and Apache::RegistryFilter
by thraxil (Prior) on Nov 19, 2003 at 20:02 UTC

    i think you've got it. i changed my test script from:

    #!/usr/bin/perl use CGI; my $cgi = new CGI(); print $cgi->header(); foreach my $key (keys %ENV) { print "$key: $ENV{$key}<br />\n"; }

    to:

    #!/usr/bin/perl use Apache; my $r = Apache->request; $r->content_type("text/html"); $r->send_http_header; foreach my $key (keys %ENV) { print "$key: $ENV{$key}<br />\n"; }

    and it seems to work now.

    do you know of any way to make it work with the former style. i usually take as much advantage of Registry's CGI emulation as possible so i can run scripts as either CGI or Registry. i know i can just put:

    if ($ENV{MOD_PERL}) { use Apache; my $r = Apache->request; $r->content_type("text/html"); $r->send_http_header; } else { print $cgi->header(); }

    into everything, but i'd rather not have to retrofit all my apps just to make them filterable. at least i know that if i upgrade to apache2, i can make anything filterable with the native filtering API. :)

      You could set the content-type in your httpd.conf, either by file extension or with a directive inside your Location block. A better solution would be modifying Apache::Filter so it notices when you have already sent headers.