korrekte Fehlermeldung wenn HTTPS gefordert ist
MudGuard
- https
1 flowh1 Edgar Ehritt0 Jens Holzkämper0 MudGuard0 MudGuard
Hi,
welcher HTTP-Status-Code ist der richtige, wenn eine Anforderung ist, daß die Seite per https aufgerufen wird, der Aufruf aber per http erfolgt?
400 Bad Request?
404 Method not allowed wäre ja, wenn statt des geforderten POST ein GET-Request daherkäme. Paßt also nicht.
406 Not Acceptable?
412 Precondition Failed?
417 Expectation Failed?
Was würdet Ihr in diesem Fall als Antwort-Code wählen?
cu,
Andreas
Vielleicht 426 Upgrade Required?
Das wäre, so der Server Möglichkeiten hat, die angeforderte Ressource mittels TLS zu servieren, die eleganteste Methode, auf die missgebildete Anfrage zu reagieren.
Gruß aus Berlin!
eddi
Hallo!
Vielleicht 426 Upgrade Required?
Nein, auf gar keinen Fall! Außer Dein Server implementiert RFC 2817, was kein mir bekannter Server unterstützt (und selbst wenn: kein Browser kann es, also genauso dämlich). Siehe </archiv/2008/1/t164710/#m1073897> für Details zu den Statuscodes 101 & 426 sowie RFC 2817.
Viele Grüße,
Christian
Hallo Christian.
Nein, auf gar keinen Fall! Außer Dein Server implementiert RFC 2817, was kein mir bekannter Server unterstützt (und selbst wenn: kein Browser kann es, also genauso dämlich). Siehe /archiv/2008/1/t164710/#m1073897 für Details zu den Statuscodes 101 & 426 sowie RFC 2817.
Vielen Dank - da habe ich etwas gelernt. :-)
Servus,
Flo
Hallo,
417 Expectation Failed?
Der Server sendet dies, wenn der Client zusätzliches Handling im Expect-Header sendet, und er dem nicht nachkommen kann. Mangels Relevanz scheidet dies aus.
412 Precondition Failed?
Der Server wird in diesem Fall von einem Clienten kontaktiert, der eine Repräsentanz einer Ressource im Cache vorhält, lässt diese z. B. durch If-Match-Header abgleichen und der Server findet keine entsprechenden Ressource dazu (weil sie verändert/verschoben wurde). Das trifft es also auch nicht.
406 Not Acceptable?
Dies hat mit den Accept-*-Header zutun. So will bsw. der Client das MIME-Type text/html haben, der Server kann aber nur mit application/xml+xhtml dienen.
404 Method not allowed wäre ja, wenn statt des geforderten POST ein GET-Request daherkäme. Paßt also nicht.
Weder 404 noch 405 sind hier ebenso richtig - genau.
400 Bad Request?
http://tools.ietf.org/html/rfc2616#section-10.4.1: The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.
Meiner Auffassung nach ist die Anfrage an eine Ressource, die nur über die URL http://.... erreichbar ist, einem Syntaxfehler gleichzusetzen. Andernfalls ist auch ein 403 möglich. Strenggenommen erlabt der Server die Anfrage nicht und kann in einem entsprechendem Error-Dokument Gründe dazu benennen.
Gruß aus Berlin!
eddi
Tach,
welcher HTTP-Status-Code ist der richtige, wenn eine Anforderung ist, daß die Seite per https aufgerufen wird, der Aufruf aber per http erfolgt?
Was würdet Ihr in diesem Fall als Antwort-Code wählen?
301 Moved Permanently vermutlich. Hat nur den Nachteil, dass der Benutzer nicht direkt informiert wird.
Microsoft nutzt übrigens HTTP "Error 403.4 - Forbidden: SSL is required to view this resource. (HTTP-Fehler 403.4 - Verboten: SSL ist zum Anzeigen der Ressource erforderlich.)"
mfg
Woodfighter
Hallo,
301 Moved Permanently vermutlich. Hat nur den Nachteil, dass der Benutzer nicht direkt informiert wird.
darüber hinaus besteht bei einer fehlerhaften Software, die auf Weiterleitungen reagiert, die Gefahr eine Weiterleitungsschleife zu erzeugen, wenn der Client aufgrund der Programmierlogik erneut falsch anfragt.
Gruß aus Berlin!
eddi
Tach,
darüber hinaus besteht bei einer fehlerhaften Software, die auf Weiterleitungen reagiert, die Gefahr eine Weiterleitungsschleife zu erzeugen, wenn der Client aufgrund der Programmierlogik erneut falsch anfragt.
du meinst eine Software, die bei einer Weiterleitung wieder die Original-URL aufruft?
mfg
Woodfighter
Hallo Jens,
welcher HTTP-Status-Code ist der richtige, wenn eine Anforderung ist, daß die Seite per https aufgerufen wird, der Aufruf aber per http erfolgt?
Was würdet Ihr in diesem Fall als Antwort-Code wählen?301 Moved Permanently vermutlich.
Ja, das wäre auch das, was ich nehmen würde. Bzw. wenn der Benutzer informiert werden soll, dann vermutlich 403, da der Benutzer so informiert wird, dass "der Zugriff auf die Ressource ohne SSL nicht erlaubt ist". Die anderen von Andreas vorgeschlagenen Codes würde ich definitiv nicht nehmen wollen, weil sie sich auf den Request und nicht die Verbindung beziehen. Bei 403 dagegen ist das IMO kein Problem.
Viele Grüße,
Christian
Hi,
404 Method not allowed
sollte natürlich 405 heißen.
Danke schon mal für die Antworten, da die Meinungen ja weit auseinandergehen, warte ich mal noch auf weitere Beiträge.
cu,
Andreas
Hi,
welcher HTTP-Status-Code ist der richtige, wenn eine Anforderung ist, daß die Seite per https aufgerufen wird, der Aufruf aber per http erfolgt?
ich habe mich jetzt für 403 Forbidden entschieden.
Da keine automatische Umstellung auf https erfolgen soll, kommen die 30x nicht in Frage.
cu,
Andreas