Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
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 meditating upon the Monastery: (6)
As of 2015-07-02 06:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (30 votes), past polls