ScaraX: 401 Unauthorized nur für HTTP Auth?

Hallo,

Ich benutze auf meiner Website ein Login-System in PHP.
Einige Seiten sind nur erreichbar wenn man eingeloggt ist,
wenn nicht erschein ein Hinweis ("Bitte loggen sie sich ein")

Macht es Sinn bzw. ist es korrekt hier einen 401 zu senden?
Momentan sende ich einen 200, aber da ja nicht die eigendliche Seite, sondern der Login-hinweis angezeigt wird hab ich mir gedacht dass ein 401 besser wäre, evtl auch für die Suchmaschinen die dann nicht den Login-hinweis speichern.

Welcher Code passt hier am besten?

MfG
ScaraX

  1. Moin!

    Ich benutze auf meiner Website ein Login-System in PHP.
    Einige Seiten sind nur erreichbar wenn man eingeloggt ist,
    wenn nicht erschein ein Hinweis ("Bitte loggen sie sich ein")

    Macht es Sinn bzw. ist es korrekt hier einen 401 zu senden?

    Browser reagieren auf Status 401 in der Regel mit der Anzeige eines Passwort-Login-Dialogs und zeigen die eigentliche Seite erst an, nachdem man den Dialog abgebrochen hat. Kann mir irgendwie nicht vorstellen, dass du das willst - es sei denn, du benutzt tatsächlich HTTP-Authentifizierung zum Einloggen, und kein HTML-Formular mit Session.

    Momentan sende ich einen 200, aber da ja nicht die eigendliche Seite, sondern der Login-hinweis angezeigt wird hab ich mir gedacht dass ein 401 besser wäre, evtl auch für die Suchmaschinen die dann nicht den Login-hinweis speichern.

    Wenn Suchmaschinen den Seiteninhalt nicht indizieren sollen, dann sende entsprechende Meta-Header in der HTML-Seite, eventuell machst du auch entsprechende Angaben in der http://example.com/robots.txt - das ist unabhängig von irgendeinem Statuscode, wobei Suchmaschinen Seiten mit Fehlerstatus in der Regel nicht indizieren. Aber 401 wäre hier falsch, wenn nicht tatsächlich HTTP-Authentifizierung benutzt werden soll.

    Welcher Code passt hier am besten?

    403 ist nicht komplett idiotisch für diesen Fall. Auch 402 ist zwar "reserved vor future use", mit "Payment required" aber ja eventuell thematisch passend (obwohl für den Fall, dass irgendwann man die Bezahlung für Inhalte vom Browser abgewickelt wird, Anpassungsarbeiten zu erwarten sind - solche unsichere Investition in die Zukunft sollte man vielleicht doch lieber lassen).

    - Sven Rautenberg

    1. »» Momentan sende ich einen 200, aber da ja nicht die eigendliche Seite, sondern der Login-hinweis angezeigt wird hab ich mir gedacht dass ein 401 besser wäre, evtl auch für die Suchmaschinen die dann nicht den Login-hinweis speichern.

      Wenn Suchmaschinen den Seiteninhalt nicht indizieren sollen, dann sende entsprechende Meta-Header in der HTML-Seite, eventuell machst du auch entsprechende Angaben in der http://example.com/robots.txt - das ist unabhängig von irgendeinem Statuscode, wobei Suchmaschinen Seiten mit Fehlerstatus in der Regel nicht indizieren. Aber 401 wäre hier falsch, wenn nicht tatsächlich HTTP-Authentifizierung benutzt werden soll.

      Danke für die Antwort.

      Ich frage mich wie andere Seite das machen...
      Hab mich mal ein bisschen umgesehen:
      Einige Seiten leiten mit "303 See Other" auf eine Login Seite weiter,
      andere zeigen auf der Seite (so wie ich das auch machen wollte) einen Hinweis an und senden einfach den 200-Code.

      Naja, da der 401 wohl ausscheidet und ich mir nicht sicher bin, wie die verschiedenen Browser auf einen 403 reagieren werde ich wohl auf die Weiterleitung setzen, sofern niemand eine bessere Idee hat ;)

      MfG
      ScaraX

      1. Moin!

        Naja, da der 401 wohl ausscheidet und ich mir nicht sicher bin, wie die verschiedenen Browser auf einen 403 reagieren werde ich wohl auf die Weiterleitung setzen, sofern niemand eine bessere Idee hat ;)

        403 ist harmlos, der wird genauso wie ein 404 oder sonst irgendein anderer Statuscode (außer eben 401) behandelt.

        Weiterleitung würde ich nur verwenden, wenn tatsächlich technisch bedingt eine Weiterleitung sein soll. Denn der Browser wird dann ja weitergeleitet auf eine andere Seite - das kann durchaus unerwünscht sein, wenn die Weiterleitung einen dann nach dem Login nicht wieder zur gewünschten ursprünglichen Seite bringt. Es ist effektiv halt ein verschwendeter Request.

        - Sven Rautenberg