I have searched in all the places I could think of for a solution to this problem, so I apologize if it has been asked before.
My application uses CGI::Application::Dispatch for routing, it's all set up through mod_perl 1.x running in Apache 1.3.x.
My CGI::Application uses CGI::Application::Plugin::Apache for integration with mod_perl and easier handling of cookies and redirects.
When I try to set a status (from within a runmode) other than 400, 404, or 500, I simply get a blank screen with no output. The 400, 404, and 500 responses produce the correct results.
Sample httpd.conf entry:
<Location /app> SetHandler perl-script PerlHandler Sample::Dispatch </Location>
Sample CGI::Application::Dispatch:
package Sample::Dispatch; use strict; use warnings; use CGI::Application::Dispatch; use base qw(CGI::Application::Dispatch); sub dispatch_args { return { prefix => 'Sample', table => [ q{} => { app => 'Application', rm => 'index' }, ], }; } 1;
Sample CGI::Application:
If you set the value of $self->query->status() to 400, 404, and 500 it works as expected. Why does it not support setting any other type of status?package Sample::Application; use strict; use warnings; use base qw(CGI::Application); use CGI::Application::Plugin::Apache qw(:all); sub setup { my ( $self, $args ) = @_; $self->run_modes('index' => 'index'); $self->start_mode('index'); return 1; } sub index { my ( $self, $args ) = @_; $self->header_type('none'); $self->query->status(403); return q{}; } 1;
In reply to Return 403 from within CGI::Application runmode by tbjers
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |