Die Status-Zeile ist Teil des HTTP-Headers, sollte also nicht in der Ausgabe des HTML-Dokuments (im Browser) erscheinen.
Wenn dem so ist, dann kannst du davon ausgehen, dass schon ein HTTP-Header (eine oder mehrere Header-Zeilen gefolgt von einer Leerzeile) ausgegeben wurde.Ich gehe mal davon aus, dass dies in deinen Code beim Aufruf von 'print_navi' passiert.
Navi->print_navi(); # Print Navigation
Wenn in 'print_navi' der Header schon geschrieben wird - in etwa so
print $cgi->header();
dann ist ein Aufruf von
print $cgi->redirect($url);
wirkungslos da der Browser die Zeile "Status: 302 ..." nicht mehr als Header sondern als Body interpretiert.-----8<-----
The redirect() function redirects the browser to a different URL. If you use redirection like this, you should not print out a header as well.
----->8-----
LOESUNG:
Gib den HTTP-Redirect-Header aus bevor 'print_navi' aufgerufen wird und gib den 'Content-Type' mit an
my $cgi = CGI->new();print $cgi->redirect(-uri => $url,
-type => 'text/html',
-status => '302 Found');
Anmerkung:
Der Status 302 ist nicht 'Moved' sondern 'Found', 'Moved Permanently' ist 301.
-----8<-----
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
----->8-----
Siehe RFC 2616, Abschnitt "6.1.1 Status Code and Reason Phrase" und die entsprechenden Erlaeuterungen der Codes im Abschnitt 10.
http://www.faqs.org/rfcs/rfc2616.html
Datum: 07.05.2007-12:58
