2009-03-24 13 views
2

Ich habe einen try catch-Block, um einen Fehler zu behandeln, den ich mit meiner Anwendung erhalte. Ich möchte auf einfache Weise die Antwort auf den Statuscode 403 oder verboten setzen und dann den Benutzer entweder zur Anmeldeseite oder zu einer benutzerdefinierten Fehlerseite umleiten.Manuelles Setzen des Antwortstatuscodes

Ich habe ein Problem mit einmal setzen des Status-Codes und der Weiterleitung. Hat jemand ein Beispiel, um den Statuscode zu setzen und dann umzuleiten?

Antwort

6
Response.Status = "403 Forbidden"; 
Response.Addheader("Location", "http://stackoverflow.com/"); 

Dies in C#, aber das Konzept sollte in den meisten Sprachen ziemlich gleich sein.

+0

Ich bekomme Folgendes, wenn ich versuche, es lokal auszuführen: Dieser Vorgang erfordert IIS integrierten Pipeline-Modus. – JPJedi

+0

Verwenden Sie Response.Headers.Add oder Response.AddHeader? Sie können auch versuchen, es in Context.Response.AddHeader zu ändern. – Brandon

+0

Sollte ich die Anfrage schließen, wenn sie auf die Anmeldeseite umgeleitet wird? – JPJedi

1

Duplizieren: What should the HTTP response be when the resource is forbidden but there’s an alternate resource?

Sending Location header ist nur für 3xx (Redirect) oder 201 Erstellt Antworten vorgesehen. Obwohl es mit den meisten Clients funktionieren kann, ist es IMHO nicht, wie HTTP entworfen wurde.

Wenn Sie wirklich auf korrekte Statuscodes und folgende HTTP-Spezifikation achten: warum antworten Sie nicht mit 303 Siehe Andere oder verwenden Sie HTTP authentication.

Verwandte Themen