|
 |
 |

Frage: Bei Response.Redirect "seite.asp" wird immer ein Fehler ausgegeben. Warum? |
Response.Redirect sendet einen Statuscode an den Browser, der ihn darüber informiert,
daß die angeforderte Datei auf einem anderen Platz als dem angeforderten erreichbar ist.
Folgende Angaben werden gesendet:
HTTP/1.0 302 Object Moved
Location <URL>
Dies weist den Browser an, die in <URL> angegebene Adresse aufzurufen.
Da das HTTP-Protokoll verlangt, dass die HTTP-Header vor dem eigentlichen HTM-Code
gesendet werden muessen, wird ein Response.Redirect innerhalb eines ASP-Skripts immer fehlschlagen,
wenn schon eine Ausgabe erzeugt wurde.
Nachfolgend sehen Sie ein Beispiel für eine solche Fehlermeldung:
Header-Fehler
/verzeichnis/test.asp, Zeile x
Die HTTP-Header sind bereits in den Client Browser geschrieben.
Änderungen am HTTP-Header müssen vorgenommen werden,
bevor der Seiteninhalt geschrieben wird.
Es gibt mehrere Möglichkeiten, dies trotzdem zu ermöglichen:
Erstens durch die Angabe von Response.Buffer = True vor der ersten HTML-Ausgabe, vorzugsweise
in der ersten oder zweiten (wenn eine Standardsprache innerhalb der ASP-Seite angegeben wird) Zeile des
Skripts.
[redirect.asp]
<%
Response.Buffer = True
%>
<html>
<head>
<title>Redirect nach Ausgabe</title>
</head>
<body>
<%
If Request("Password") <> "passwort" Then
Response.Redirect "login.asp"
End if
%>
</body>
</html>
Desweiteren können Sie den ASP-Code, der die Prüfung vornimmt, ob ein Redirect erfolgen muss, vor der
ersten HTML-Ausgabe einfügen:
[redirect.asp]
<%
' --- Pufferung der Ausgabe wird nicht benötigt, ist aber trotzdem
' --- zu empfehlen, da die Abarbeitung des Codes effizienter erfolgt.
' --- Response.Buffer = True
If Request("Password") <> "passwort" Then
Response.Redirect "login.asp"
End if
%>
<html>
<head>
<title>Redirect nach Ausgabe</title>
</head>
<body>
Hier steht der eigentliche Text
</body>
</html> |
|
 |
 |
|
|