404 Error
Stefan
- https
Hallo zusammen
Wenn ein User keinen Zugriff auf eine Seite hat, sende ich den 401 Header Status. Ich dachte eigentlich, dass dann automatisch die 401 Fehler Seite erscheint.
Den Header Status sende ich folgendermassen (PHP):
header ("HTTP/1.1 401");
Leider wird trotzdem die Seite angezeigt, die eigentlich gesperrt sein sollte.
Was mache ich falsch oder ist meine Überlegung falsch, dass wenn ich den Header Status 401 sende, die entsprechende Fehlerseite erscheint?
Vielen Dank für eure Hilfe.
Moin!
Wenn ein User keinen Zugriff auf eine Seite hat, sende ich den 401 Header Status. Ich dachte eigentlich, dass dann automatisch die 401 Fehler Seite erscheint.
Den Header Status sende ich folgendermassen (PHP):
header ("HTTP/1.1 401");
Leider wird trotzdem die Seite angezeigt, die eigentlich gesperrt sein sollte.
Was mache ich falsch oder ist meine Überlegung falsch, dass wenn ich den Header Status 401 sende, die entsprechende Fehlerseite erscheint?
Wenn du einfach nur Status 401 sendest, dann wird der Inhalt deiner Seite zusammen mit diesem HTTP-Status an den Browser geschickt - was wiederum verursacht, dass der Browser seinen Benutzer nach Username und Passwort fragt, und wenn der Benutzer den Vorgang abbricht, anstelle dessen die ausgelieferte Seite anzeigt - das ist die, die du eigentlich schützen wolltest, oder?
- Sven Rautenberg
Wenn du einfach nur Status 401 sendest, dann wird der Inhalt deiner Seite zusammen mit diesem HTTP-Status an den Browser geschickt - was wiederum verursacht, dass der Browser seinen Benutzer nach Username und Passwort fragt, und wenn der Benutzer den Vorgang abbricht, anstelle dessen die ausgelieferte Seite anzeigt - das ist die, die du eigentlich schützen wolltest, oder?
Ja das ist die, die ich schützten möchte.
Die User Authentifikation findet über ein php Script statt und nicht mit der Apache Komponente, weil es mehrere Benutzergruppen gibt und jede Gruppe auf andere Seiten Zugriff hat. Ausserdem können die Berechtigung durch eine Weboberfläche gesteuert werden.
Das mit der normalen Weiterleitung header("Location: ..."); hab ich mir auch überlegt, doch fände ich es passender, wenn der Server selbst, anhand des Status Codes die Seite ausliefert.
Moin!
Ja das ist die, die ich schützten möchte.
Die User Authentifikation findet über ein php Script statt und nicht mit der Apache Komponente, weil es mehrere Benutzergruppen gibt und jede Gruppe auf andere Seiten Zugriff hat. Ausserdem können die Berechtigung durch eine Weboberfläche gesteuert werden.
Ein simples "Status 401" nimmt dir aber nicht ab, trotzdem die Fallunterscheidung zu treffen, ob du den tatsächlichen Inhalt der Seite auslieferst, oder eine Meldung, die den User erreicht, wenn er die Passworteingabe abbricht (oder in manchen Browsern auch nach dem dritten Mal Status 401 auf derselben URL).
Das mit der normalen Weiterleitung header("Location: ..."); hab ich mir auch überlegt, doch fände ich es passender, wenn der Server selbst, anhand des Status Codes die Seite ausliefert.
Wird ja auch funktionieren, wenn du es richtig programmierst... :)
- Sven Rautenberg
hallo,
Wenn ein User keinen Zugriff auf eine Seite hat, sende ich den 401 Header Status.
Das ist ein bißchen verworren. Diese Aufgabe sollte eigentlich dein Webserver erfüllen.
Den Header Status sende ich folgendermassen (PHP):
header ("HTTP/1.1 401");
Leider wird trotzdem die Seite angezeigt, die eigentlich gesperrt sein sollte.
Weil das keine "Sperrung" bedeutet. Der HTTP-Statuscode 401 bedeutet, "Die angeforderten Daten sind zugangsgeschützt. Der Server kann die Daten nur senden, wenn eine gültige Zugangskennung, bestehend aus Benutzername und Passwort, bei der Anfrage mit gesendet wird".
Was mache ich falsch oder ist meine Überlegung falsch, dass wenn ich den Header Status 401 sende, die entsprechende Fehlerseite erscheint?
Du versuchst es mit PHP zu lösen. Zwar wäre es möglich, mit
header("Location:http://www.example.test/fehler401.php")
herumzuwurschteln, aber eine solche "Weiterleitung" betrifft _alle_, und scheint von dir nicht beabsichtigt - ganz abgesehen davon, daß das ziemlich unsinnig wäre.
Versuche das Ganze über .htaccess zu lösen.
Grüße aus Berlin
Christoph S.
Hallo,
Wenn ein User keinen Zugriff auf eine Seite hat, sende ich den 401 Header Status.
das ist eigentlich nicht so ganz sauber, 401 heißt ja "Authorization required". Ich würde 403 Forbidden für passender halten, vor allem weil der Browser beim 401 normalerweise mit der Anfrage nach Benutzername und Kennwort reagiert.
Den Header Status sende ich folgendermassen (PHP):
header ("HTTP/1.1 401");
Leider wird trotzdem die Seite angezeigt, die eigentlich gesperrt sein sollte.
Ich bin mir nicht sicher, aber müsste es nicht "Status: 401" heißen?
So long,
Martin
Hi,
header ("HTTP/1.1 401");
Ich bin mir nicht sicher, aber müsste es nicht "Status: 401" heißen?
Nö.
Aber meist wird nach dem numerischen Statuscode noch der String geliefert, also z.B. so:
HTTP/1.x 401 Authorization Required
(so macht's das Forum hier)
cu,
Andreas