cLive ;-) has asked for the wisdom of the Perl Monks concerning the following question:
Scratching my head on this one. My app works fine, except it sends a 500 Internal Server Error status rather than 200 OK.
Content displays fine in the browser. I only noticed it when adding error checking to the client app.
I've stripped it down to a minimal case:
package Test; use strict; use warnings; use base qw(CGI::Application); sub setup { my $self = shift; # default runmodes $self->start_mode('do_main'); $self->mode_param('m'); $self->run_modes([qw/ do_main testtt /]); } sub cgiapp_prerun { my $self = shift; $self->header_add( 'Content-type' => 'text/plain' ); } sub testtt { my $self = shift; return "test - OK to here"; } sub do_main { my $self = shift; return "main - OK to here"; } 1;
and call the url with query string:
?m=testttI get a screwed up content-type header back:
Content-Type: content-type
If I comment out the header line, the page serves correctly with the text/html content type (but I need text/plain!).
Changing the capitalization of the header name appears to make no difference.
Weird thing is that I have another app on the same server that works correctly, but I can't see what's any different in it.
Any ideas? AM I missing something extremely simple here?
EDIT: as always, writing out this question prods me to find the solution by myself.
I should have used:
$self->header_add( '-type' => 'text/plain' );
The other app wasn't looking at the status header, but had the same issue (now I check).
OK, that's enough for me for today :)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: CGI::Application header weirdness (docs)
by tye (Sage) on May 23, 2009 at 06:30 UTC | |
by cLive ;-) (Prior) on May 23, 2009 at 06:33 UTC |