Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

CGI::Application header (typo, heh)

by cLive ;-) (Parson)
on May 23, 2009 at 06:13 UTC ( #765800=perlquestion: print w/ replies, xml ) Need Help??
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=testtt

I 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 :)

Comment on CGI::Application header (typo, heh)
Select or Download Code
Re: CGI::Application header weirdness (docs)
by tye (Cardinal) on May 23, 2009 at 06:30 UTC

    The CGI::Application docs show you should use -type for that. It also references the CGI.pm docs that elaborate and show that to get arbitrary headers you would use -Content_type not 'Content-type'.

    $self->hea­der_add( -t­ype => 'text/plai­n' );

    - tye        

      Hey tye, yep, I worked it out. I think it should throw an exception though for a bad one. Bugs the hell out of me when I'm allowed to make those kind of errors by the module. Ah well, at least I can sleep now :)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://765800]
Front-paged by tye
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (9)
As of 2014-09-18 17:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (120 votes), past polls