Perl: HTTP-Weiterleitung
Martin
Beim einem Perl-Script für einen WindowsNT-Server, auf dem Perl ISAPI läuft, habe ich folgendes Problem bei der Redirection zu einer anderen Web-Seite:
Folgender Ausschnitt des Codes funktioniert mit IE4 einwandfrei, kein Browser von Netscape führt aber die Weiterleitung durch:
print "HTTP/1.0 303 See Other\r\n" if $ENV{PERLXS} eq "PerlIS";
print <<"END";
Content-Type: text/plain
Expires: 01/01/1998 00:00:00
Location: http://www.kicktip.de\n\n
END
Dieser Teil des Scripts kann unter http://www.netwerk.de/forum/cgi-bin/re.pl getestet werden.
Hat jemand Erfahrung mit Perl ISAPI? Kann mir jemand weiterhelfen?
Danke,
Martin
Beim einem Perl-Script für einen WindowsNT-Server, auf dem Perl ISAPI läuft, habe ich folgendes Problem bei der Redirection zu einer anderen Web-Seite:
Folgender Ausschnitt des Codes funktioniert mit IE4 einwandfrei, kein Browser von Netscape führt aber die Weiterleitung durch:
print "HTTP/1.0 303 See Other\r\n" if $ENV{PERLXS} eq "PerlIS";
print <<"END";
Content-Type: text/plain
Expires: 01/01/1998 00:00:00
Location: http://www.kicktip.de\n\n
END
Äh, ich hab zwar keine Ahnung, wofür die ganzen Zeilen gut sind, aber ne Weiterleitung geht mit print "Location: xxx.htm\n\n". Laß mal den Content-type weg. Vielleicht solltest du es auch mal ohne das Expires versuchen.
print "HTTP/1.0 303 See Other\r\n" if $ENV{PERLXS} eq "PerlIS";
print <<"END";
Content-Type: text/plain
Expires: 01/01/1998 00:00:00
Location: http://www.kicktip.de\n\n
ENDÄh, ich hab zwar keine Ahnung, wofür die ganzen Zeilen gut sind, aber ne Weiterleitung geht mit print "Location: xxx.htm\n\n". Laß mal den Content-type weg. Vielleicht solltest du es auch mal ohne das Expires versuchen.
Wenn ich das Script folgendermaßen ersetzte, erhalte ich bei Netscape eine Meldung: The document contained no data. Try again later...
print "HTTP/1.0 303 See Other\r\n" if $ENV{PERLXS} eq "PerlIS";
print "Location: http://www.kicktip.de\n\n";
Zu testen unter http://www.netwerk.de/forum/cgi-bin/re1.pl
Das Problem besteht auch nur unter ISAPI Perl. Ansonsten funktioniert das "print 'Location: ...'" einwandfrei.
Martin
Wenn ich das Script folgendermaßen ersetzte, erhalte ich bei Netscape eine Meldung: The document contained no data. Try again later...
print "HTTP/1.0 303 See Other\r\n" if $ENV{PERLXS} eq "PerlIS";
print "Location: http://www.kicktip.de\n\n";Zu testen unter http://www.netwerk.de/forum/cgi-bin/re1.pl
Das Problem besteht auch nur unter ISAPI Perl. Ansonsten funktioniert das "print 'Location: ...'" einwandfrei.
Und wofür ist dann die 1. Zeile da? Wenn du nur ne Weiterleitung haben willst, dann kannst du sie ja auch weglassen.
Das Problem besteht auch nur unter ISAPI Perl. Ansonsten funktioniert das "print 'Location: ...'" einwandfrei.
Und wofür ist dann die 1. Zeile da? Wenn du nur ne Weiterleitung haben willst, dann kannst du sie ja auch weglassen.
Die erste Zeile ist doch notwendig für die Ausführung von Perl-Scripts in einer ISAPI-Version.
Bei PerlIS muß grundsätzlich ein kompletter HTTP-Header ausgegeben werden (HTTP/1.0 200 OK), was Perl an sich nicht korrekt ausführt.
Ohne diese Zeile bricht die Ausführung mit einer Fehlermeldung ab.
Gibt es keine Redirect-Beispiele, die unter WindowsNT mit der ISAPI-Dll laufen?
Martin
Aus der Perl-Mailingliste kam nun die Lösung:
Der übergebene Header Nummer 303 war falsch.
Richtig muß die erste Zeile heißen:
print "HTTP/1.0 302 Redirected\n" if ($ENV{'PerlXS'} eq 'PerlIS');;
Das gesamte Redirection funktioniert also folgendermaßen:
print "HTTP/1.0 302 Redirected\n" if ($ENV{'PerlXS'} eq 'PerlIS');;
print "Location: http://www.netwerk.de\n\n";
Trotzdem auch hier im Forum vielen Dank für die Hilfe...
Beim einem Perl-Script für einen WindowsNT-Server, auf dem Perl ISAPI läuft, habe ich folgendes Problem bei der Redirection zu einer anderen Web-Seite:
Folgender Ausschnitt des Codes funktioniert mit IE4 einwandfrei, kein Browser von Netscape führt aber die Weiterleitung durch:
print "HTTP/1.0 303 See Other\r\n" if $ENV{PERLXS} eq "PerlIS";
print <<"END";
Content-Type: text/plain
Expires: 01/01/1998 00:00:00
Location: http://www.kicktip.de\n\n
ENDDieser Teil des Scripts kann unter http://www.netwerk.de/forum/cgi-bin/re.pl getestet werden.
Hat jemand Erfahrung mit Perl ISAPI? Kann mir jemand weiterhelfen?
Danke,
Martin