Sven Rautenberg: 401 Unauthorized nur für HTTP Auth?

Beitrag lesen

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