Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Problem with CGI.pm redirects

by stevee (Acolyte)
on Jun 06, 2011 at 14:38 UTC ( #908304=perlquestion: print w/replies, xml ) Need Help??

stevee has asked for the wisdom of the Perl Monks concerning the following question:

Hi all

I have a simple perl cgi script which redirects quite happily:

#!C:\perl\bin\perl.exe -wT use strict; use CGI qw/:standard/; my $cgi = new CGI; print $cgi->redirect( -uri => 'http://perl.about.com/' );

trying to do the same in another script (relevant bits below)

if ($match==1) { my $r=new CGI; print $r->redirect( -uri => 'http://perl.about.com/' ); }

results in a web page with my debug prints in which says

Got the following headers: HTTP_REMOTE_USER: setheri HTTP_HOST: localhost HTTP_USER_AGENT: Fiddler sid is setheri Entering user test Check of hash sid2 is setheri testing for existence Item is setheri we have a match Status: 302 Found Location: http://perl.about.com/

The script basically gets the HTTP header value REMOTE_USER and if that is in a given list redirects. Don't ask - forced to do it that way by system restrictions. Can anyone shed any light as to why the second redirect does not work?

Many thanks

Replies are listed 'Best First'.
Re: Problem with CGI.pm redirects
by Corion (Patriarch) on Jun 06, 2011 at 14:43 UTC

    Your debug prints confuse the webserver. Everything that you print to STDOUT goes to the client, and if the client does not see a HTTP header first, it assumes that it will get served plain text. Which is what happens with your output - at the bottom, there is the correct and expected Status: 302 line and the new location header.

    To solve this, don't output anything before printing the Status: line.

      ... or print your debug output to STDERR. warn does that by default.

      If you use Apache, the STDERR output of the script can be found in the error.log of your virtual host (typically /var/log/apache2/yourhost/error.log).

        Many thanks both, works a treat! And the tip about warn is very useful.

        Stevee

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://908304]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (3)
As of 2022-07-04 00:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?