Zum Inhalt springen

„HTTP-Statuscode“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K →Weblinks: Archiv link funktioniert nicht - entfernt
Formatierung
 
(37 dazwischenliegende Versionen von 28 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein '''HTTP-Statuscode''' wird von einem [[Server]] auf jede [[Hypertext Transfer Protocol|HTTP]]-Anfrage als Antwort geliefert. Auf der anfragenden Seite steht dabei ein [[Client]] wie beispielsweise ein [[Webbrowser]]. Der Server teilt durch den HTTP-Statuscode dem Client mit, ob die Anfrage erfolgreich bearbeitet wurde. Im Fehlerfall gibt der Statuscode Auskunft darüber, wo (beispielsweise über eine Umleitung) oder wie (zum Beispiel mit [[HTTP-Authentifizierung|Authentifizierung]]) er die gewünschten Informationen erhalten kann. Am bekanntesten sind dabei die Codes 404: „Nicht gefunden“, 403: „Fehlende Zugriffsberechtigung“ und 400: „Fehlerhafte Anfrage“.
Ein '''HTTP-Statuscode''' wird von einem [[Server]] auf jede [[Hypertext Transfer Protocol|HTTP]]-Anfrage als Antwort geliefert. Auf der anfragenden Seite steht dabei ein [[Client]] wie beispielsweise ein [[Webbrowser]]. Der Server teilt durch den HTTP-Statuscode dem Client mit, ob die Anfrage erfolgreich bearbeitet wurde. Im Fehlerfall gibt der Statuscode Auskunft darüber, wo (beispielsweise über eine Umleitung) oder wie (zum Beispiel mit [[HTTP-Authentifizierung|Authentifizierung]]) er die gewünschten Informationen erhalten kann. Am bekanntesten sind dabei die Codes 404: „Nicht gefunden“, 403: „Fehlende Zugriffsberechtigung“ und 400: „Fehlerhafte Anfrage“.
[[Datei:HTTP 404.png|mini|Beispiel einer Webseite, die von einem Webserver zusätzlich zum 404 Statuscode gesendet wurde.]]
[[Datei:HTTP 404.png|mini|Beispiel einer Webseite, die von einem Webserver zusätzlich zum 404 Statuscode gesendet wurde]]


Die erste Ziffer eines Statuscodes stellt die Statusklasse dar. Sie sind in RFC 7231 (ersetzt RFC 2616), sowie RFC 2518, RFC 2817, RFC 2295, RFC 2774 und RFC 4918 spezifiziert. Einige gehören zum [[WebDAV|Distributed Authoring (WebDAV)]].
Die erste Ziffer eines Statuscodes stellt die Statusklasse dar. Sie sind in <nowiki>RFC&nbsp;9110</nowiki><ref>{{RFC-Internet |RFC=9110 |Titel=HTTP Semantics |Datum=2022-06 |Autor=R. Fielding, M. Nottingham, J. Reschke}}</ref> (ersetzt <nowiki>RFC&nbsp;2616</nowiki><ref name="RFC2616" />), sowie <nowiki>RFC&nbsp;2518</nowiki>,<ref name="RFC2518" /> <nowiki>RFC&nbsp;2817</nowiki>,<ref name="RFC2817" /> <nowiki>RFC&nbsp;2295</nowiki>,<ref name="RFC2295" /> <nowiki>RFC&nbsp;2774</nowiki><ref name="RFC2774" /> und <nowiki>RFC&nbsp;4918</nowiki><ref name="RFC4918" /> spezifiziert. Einige gehören zum [[WebDAV|Distributed Authoring (WebDAV)]].


Neben den in [[Request for Comments|RFC]] standardisierten Statuscodes verwenden manche Softwarehersteller auch [[proprietär]]e Codes für eigens definierte Status- und Fehlermeldungen. Andere Software kann dem Benutzer diese Codes nur als allgemeinen unbekannten Fehler anzeigen; nicht aber eine Übersetzung und Hinweise zum weiteren Vorgehen. Teilweise können die Server den Begleitumständen der Anfrage bereits entnehmen, dass es sich um die zugehörige Spezialsoftware handelt, und geben nur dann die proprietären Codes zurück. In diesem Artikel sind einige proprietäre Codes aufgeführt und entsprechend gekennzeichnet.
Neben den in [[Request for Comments|RFC]] standardisierten Statuscodes verwenden manche Softwarehersteller auch [[proprietär]]e Codes für eigens definierte Status- und Fehlermeldungen. Andere Software kann dem Benutzer diese Codes nur als allgemeinen unbekannten Fehler anzeigen; nicht aber eine Übersetzung und Hinweise zum weiteren Vorgehen. Teilweise können die Server den Begleitumständen der Anfrage bereits entnehmen, dass es sich um die zugehörige Spezialsoftware handelt, und geben nur dann die proprietären Codes zurück. In diesem Artikel sind einige proprietäre Codes aufgeführt und entsprechend gekennzeichnet.


== Liste der HTTP-Statuscodes ==
== Liste der HTTP-Statuscodes ==

=== {{Anker|g1xx}} 1xx – Informationen ===
=== {{Anker|g1xx}} 1xx – Informationen ===
Die Bearbeitung der Anfrage dauert noch an.
Die Bearbeitung der Anfrage dauert noch an.
Zeile 15: Zeile 16:
! Nachricht
! Nachricht
! Bedeutung
! Bedeutung
|- id="code100"
|-
! {{Anker|code100}}100
! 100
| {{lang|en|''Continue''}}
| ''{{lang|en|Continue}}''
| Die laufende Anfrage an den Server wurde noch nicht zurückgewiesen. (Wird im Zusammenhang mit dem „Expect 100-continue“-Header-Feld verwendet.<ref>RFC 2616 – ''Hypertext Transfer Protocol – HTTP/1.1''</ref>) Der Client kann nun mit der potentiell sehr großen Anfrage fortfahren.
| Die laufende Anfrage an den Server wurde noch nicht zurückgewiesen. (Wird im Zusammenhang mit dem „Expect 100-continue“-Header-Feld verwendet.<ref name="RFC2616" />) Der Client kann nun mit der potentiell sehr großen Anfrage fortfahren.
|- id="code101"
|-
! {{Anker|code101}}101
! 101
| {{lang|en|''Switching Protocols''}}
| ''{{lang|en|Switching Protocols}}''
| Wird verwendet, wenn der Server eine Anfrage mit gesetztem „Upgrade“-Header-Feld empfangen hat und mit dem Wechsel zu einem anderen Protokoll einverstanden ist. Anwendung findet dieser Status-Code beispielsweise im Wechsel von HTTP zu [[WebSocket]].
| Wird verwendet, wenn der Server eine Anfrage mit gesetztem „Upgrade“-Header-Feld empfangen hat und mit dem Wechsel zu einem anderen Protokoll einverstanden ist. Anwendung findet dieser Status-Code beispielsweise im Wechsel von HTTP zu [[WebSocket]].
|- id="code102"
|-
! {{Anker|code102}}102
! 102
| {{lang|en|''Processing''}}
| ''{{lang|en|Processing}}''
| Wird verwendet, um ein Timeout zu vermeiden, während der Server eine zeitintensive Anfrage bearbeitet.<ref>RFC 2518</ref> Dies ist eine Interim-Antwort, auf die auf derselben Verbindung ohne weitere Client-Anfrage eine endgültige Antwort folgen muss.
| Wird verwendet, um ein Timeout zu vermeiden, während der Server eine zeitintensive Anfrage bearbeitet.<ref name="RFC2518" /> Dies ist eine Interim-Antwort, auf die auf derselben Verbindung ohne weitere Client-Anfrage eine endgültige Antwort folgen muss.
|- id="code103"
|-
! {{Anker|code103}}103
! 103
| {{lang|en|''Early Hints''}}
| ''{{lang|en|Early Hints}}''
| Wird zusammen mit dem „Link“-Header verwendet, um das Vorladen von Ressourcen zu ermöglichen, während der Server die finale Antwort noch vorbereitet.<ref>RFC 8297</ref>
| Wird zusammen mit dem „Link“-Header verwendet, um das Vorladen von Ressourcen zu ermöglichen, während der Server die finale Antwort noch vorbereitet.<ref>{{RFC-Internet |RFC=8297 |Titel=An HTTP Status Code for Indicating Hints |Datum=2017-12}}</ref>
|}
|}


Zeile 41: Zeile 42:
! Nachricht
! Nachricht
! Bedeutung
! Bedeutung
|- id="code200"
|-
! {{Anker|code200}}200
! 200
| {{lang|en|''OK''}}
| ''{{lang|en|OK}}''
| Die Anfrage wurde erfolgreich bearbeitet und das Ergebnis der Anfrage wird in der Antwort übertragen.
| Die Anfrage wurde erfolgreich bearbeitet und das Ergebnis der Anfrage wird in der Antwort übertragen.
|- id="code201"
|-
! {{Anker|code201}}201
! 201
| {{lang|en|''Created''}}
| ''{{lang|en|Created}}''
| Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wurde vor dem Senden der Antwort erstellt. Das „Location“-Header-Feld enthält eventuell die Adresse der erstellten Ressource.
| Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wurde vor dem Senden der Antwort erstellt. Das „Location“-Header-Feld enthält eventuell die Adresse der erstellten Ressource.
|- id="code202"
|-
! {{Anker|code202}}202
! 202
| {{lang|en|''Accepted''}}
| ''{{lang|en|Accepted}}''
| Die Anfrage wurde akzeptiert, wird aber zu einem späteren Zeitpunkt ausgeführt. Das Gelingen der Anfrage kann nicht garantiert werden.
| Die Anfrage wurde akzeptiert, wird aber zu einem späteren Zeitpunkt ausgeführt. Das Gelingen der Anfrage kann nicht garantiert werden.
|- id="code203"
|-
! {{Anker|code203}}203
! 203
| {{lang|en|''Non-Authoritative Information''}}
| ''{{lang|en|Non-Authoritative Information}}''
| Der Server agiert als „Transforming [[Proxy (Rechnernetz)|Proxy]]“, erhielt eine ''200 OK'' Antwort von der Quelle und antwortet mit einem veränderten Dokument der Quelle.<ref>Roy Fielding, Julian Reschke: [[rfc:7231#section-6.3.4|6.3.4 – ''Semantics and Content'']]. RFC 7231 – ''Hypertext Transfer Protocol'' (HTTP/1.1), Juni 2014</ref><ref>Roy Fielding, Julian Reschke: [[rfc:7230#section-5.7.2|5.7.2 – ''Transformations'']]. RFC 7230 – ''Message Syntax and Routing'', Juni 2014</ref>
| Der Server agiert als „Transforming [[Proxy (Rechnernetz)|Proxy]]“, erhielt eine ''200 OK'' Antwort von der Quelle und antwortet mit einem veränderten Dokument der Quelle.<ref>{{RFC-Internet |RFC=7231 |Titel=Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |Datum=2014-06 |Autor=Roy Fielding, Julian Reschke |Abschnitt=6.3.4 |Abschnittstitel=203 Non-Authoritative Information}}</ref><ref>{{RFC-Internet |RFC=7230 |Titel=Message Syntax and Routing |Datum=2014-06 |Autor=Roy Fielding, Julian Reschke |Abschnitt=5.7.2 |Abschnittstitel=Transformations}}</ref>
|- id="code204"
|-
! {{Anker|code204}}204
! 204
| {{lang|en|''No Content''}}
| ''{{lang|en|No Content}}''
| Die Anfrage wurde erfolgreich durchgeführt, die Antwort enthält jedoch bewusst keine Daten.
| Die Anfrage wurde erfolgreich durchgeführt, die Antwort enthält jedoch bewusst keine Daten.
|- id="code205"
|-
! {{Anker|code205}}205
! 205
| {{lang|en|''Reset Content''}}
| ''{{lang|en|Reset Content}}''
| Die Anfrage wurde erfolgreich durchgeführt; der Client soll das Dokument neu aufbauen und Formulareingaben zurücksetzen.
| Die Anfrage wurde erfolgreich durchgeführt; der Client soll das Dokument neu aufbauen und Formulareingaben zurücksetzen.
|- id="code206"
|-
! {{Anker|code206}}206
! 206
| {{lang|en|''Partial Content''}}
| ''{{lang|en|Partial Content}}''
| Der angeforderte Teil wurde erfolgreich übertragen (wird im Zusammenhang mit einem „Content-Range“-Header-Feld oder dem Content-Type multipart/byteranges verwendet). Kann einen Client über Teil-Downloads informieren (wird zum Beispiel von [[Wget]] genutzt, um den Downloadfortschritt zu überwachen oder einen Download in mehrere Streams aufzuteilen).
| Der angeforderte Teil wurde erfolgreich übertragen (wird im Zusammenhang mit einem „Content-Range“-Header-Feld oder dem Content-Type multipart/byteranges verwendet). Kann einen Client über Teil-Downloads informieren (wird zum Beispiel von [[Wget]] genutzt, um den Downloadfortschritt zu überwachen oder einen Download in mehrere Streams aufzuteilen).
|- id="code207"
|-
! {{Anker|code207}}207
! 207
| {{lang|en|''Multi-Status''}}
| ''{{lang|en|Multi-Status}}''
| WebDAV RFC 4918 – Die Antwort enthält ein in WebDAV spezifiziertes XML-Dokument, das mehrere Statuscodes zu unabhängig voneinander durchgeführten Operationen enthält.
| WebDAV <nowiki>RFC&nbsp;4918</nowiki><ref name="RFC4918" /> – Die Antwort enthält ein in WebDAV spezifiziertes XML-Dokument, das mehrere Statuscodes zu unabhängig voneinander durchgeführten Operationen enthält.
|- id="code208"
|-
! {{Anker|code208}}208
! 208
| {{lang|en|''Already Reported''}}
| ''{{lang|en|Already Reported}}''
| WebDAV RFC 5842 – Die Mitglieder einer WebDAV-Bindung wurden bereits zuvor aufgezählt und sind in dieser Anfrage nicht mehr vorhanden.
| WebDAV <nowiki>RFC&nbsp;5842</nowiki>,<ref name="RFC5842" /> – Die Mitglieder einer WebDAV-Bindung wurden bereits zuvor aufgezählt und sind in dieser Anfrage nicht mehr vorhanden.
|- id="code226"
|-
! {{Anker|code226}}226
! 226
| {{lang|en|''IM Used''}}
| ''{{lang|en|IM Used}}''
| RFC 3229 – Der Server hat eine GET-Anforderung für die Ressource erfüllt, die Antwort ist eine Darstellung des Ergebnisses von einer oder mehrerer Instanz-Manipulationen, bezogen auf die aktuelle Instanz.
| <nowiki>RFC&nbsp;3229</nowiki><ref>{{RFC-Internet |RFC=3229 |Titel=Delta encoding in HTTP |Datum=2002-01}}</ref> – Der Server hat eine GET-Anforderung für die Ressource erfüllt, die Antwort ist eine Darstellung des Ergebnisses von einer oder mehrerer Instanz-Manipulationen, bezogen auf die aktuelle Instanz.
|}
|}


Zeile 91: Zeile 92:
! Nachricht
! Nachricht
! Bedeutung
! Bedeutung
|- id="code300"
|-
! {{Anker|code300}}300
! 300
| {{lang|en|''Multiple Choices''}}
| ''{{lang|en|Multiple Choices}}''
| Die angeforderte Ressource steht in verschiedenen Arten zur Verfügung. Die Antwort enthält eine Liste der verfügbaren Arten. Das „Location“-Header-Feld enthält eventuell die Adresse der vom Server bevorzugten Repräsentation.
| Die angeforderte Ressource steht in verschiedenen Arten zur Verfügung. Die Antwort enthält eine Liste der verfügbaren Arten. Das „Location“-Header-Feld enthält eventuell die Adresse der vom Server bevorzugten Repräsentation.
|- id="code301"
|-
! {{Anker|code301}}301
! 301
| {{lang|en|''Moved Permanently''}}
| ''{{lang|en|Moved Permanently}}''
| Die angeforderte Ressource steht ab sofort unter der im „Location“-Header-Feld angegebenen Adresse bereit (auch Redirect genannt). Die alte Adresse ist nicht länger gültig.
| Die angeforderte Ressource steht ab sofort unter der im „Location“-Header-Feld angegebenen Adresse bereit (auch Redirect genannt). Die alte Adresse ist nicht länger gültig.
|- id="code302"
|-
! {{Anker|code302}}302
! 302
| {{lang|en|''Found''}} ({{lang|en|''Moved Temporarily''}})
| ''{{lang|en|Found}}'' (''{{lang|en|Moved Temporarily}}'')
| Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit.<ref name="RFC1945">RFC 1945</ref> Die alte Adresse bleibt gültig. Die Browser folgen meist mit einem GET, auch wenn der ursprüngliche Request ein POST war. Wird in HTTP/1.1 je nach Anwendungsfall durch die Statuscodes 303 oder 307 ersetzt. 302-Weiterleitung ist aufgrund eines Suchmaschinen-Fehlers, des [[URL-Hijacking]]s, in Kritik geraten.
| Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit.<ref>{{RFC-Internet |RFC=1945 |Titel=Hypertext Transfer Protocol – HTTP/1.0 |Datum=1996-05}}</ref> Die alte Adresse bleibt gültig. Die Browser folgen meist mit einem GET, auch wenn der ursprüngliche Request ein POST war. Wird in HTTP/1.1 je nach Anwendungsfall durch die Statuscodes 303 oder 307 ersetzt. 302-Weiterleitung ist aufgrund eines Suchmaschinen-Fehlers, des [[URL-Hijacking]]s, in Kritik geraten.
|- id="code303"
|-
! {{Anker|code303}}303
! 303
| {{lang|en|''See Other''}}
| ''{{lang|en|See Other}}''
| Die Antwort auf die durchgeführte Anfrage lässt sich unter der im „Location“-Header-Feld angegebenen Adresse beziehen. Der Browser soll mit einem GET folgen, auch wenn der ursprüngliche Request ein POST war.
| Die Antwort auf die durchgeführte Anfrage lässt sich unter der im „Location“-Header-Feld angegebenen Adresse beziehen. Der Browser soll mit einem GET folgen, auch wenn der ursprüngliche Request ein POST war.
|- id="code304"
|-
! {{Anker|code304}}304
! 304
| {{lang|en|''Not Modified''}}
| ''{{lang|en|Not Modified}}''
| Der Inhalt der angeforderten Ressource hat sich seit der letzten Abfrage des Clients nicht verändert und wird deshalb nicht übertragen. Zu den Einzelheiten siehe [[Browser-Cache #Versionsvergleich|Browser-Cache-Versionsvergleich]].
| Der Inhalt der angeforderten Ressource hat sich seit der letzten Abfrage des Clients nicht verändert und wird deshalb nicht übertragen. Zu den Einzelheiten siehe [[Browser-Cache#Versionsvergleich|Browser-Cache-Versionsvergleich]].
|- id="code305"
|-
! {{Anker|code305}}305
! 305
| {{lang|en|''Use Proxy''}}
| ''{{lang|en|Use Proxy}}''
| Die angeforderte Ressource ist nur über einen Proxy erreichbar. Das „Location“-Header-Feld enthält die Adresse des Proxys.
| Die angeforderte Ressource ist nur über einen Proxy erreichbar. Das „Location“-Header-Feld enthält die Adresse des Proxys.
|- id="code306"
|-
! {{Anker|code306}}306
! 306
| {{lang|en|''(reserviert)''}}
| ''{{lang|en|(reserviert)}}''
| 306 wird nicht mehr verwendet, ist aber reserviert. Es wurde für „Switch Proxy“ verwendet.
| 306 wird nicht mehr verwendet, ist aber reserviert. Es wurde für „Switch Proxy“ verwendet.
|- id="code307"
|-
! {{Anker|code307}}307
! 307
| {{lang|en|''Temporary Redirect''}}
| ''{{lang|en|Temporary Redirect}}''
| Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig. Der Browser soll mit ''derselben'' Methode folgen wie beim ursprünglichen Request (d.&nbsp;h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu 302/303.
| Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig. Der Browser soll mit ''derselben'' Methode folgen wie beim ursprünglichen Request (d.&nbsp;h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu 302/303.
|- id="code308"
|-
! {{Anker|code308}}308
! 308
| {{lang|en|''Permanent Redirect''}}
| ''{{lang|en|Permanent Redirect}}''
| Die angeforderte Ressource steht ab sofort unter der im „Location“-Header-Feld angegebenen Adresse bereit, die alte Adresse ist nicht länger gültig. Der Browser soll mit ''derselben'' Methode folgen wie beim ursprünglichen Request (d.&nbsp;h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu 301.<ref>Julian Reschke: RFC 7538 – The Hypertext Transfer Protocol Status Code 308 (Permanent Redirect), [[IETF]], April 2015.</ref>
| Die angeforderte Ressource steht ab sofort unter der im „Location“-Header-Feld angegebenen Adresse bereit, die alte Adresse ist nicht länger gültig. Der Browser soll mit ''derselben'' Methode folgen wie beim ursprünglichen Request (d.&nbsp;h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu&nbsp;301.<ref>{{RFC-Internet |RFC=7538 |Titel=The Hypertext Transfer Protocol Status Code 308 (Permanent Redirect) |Datum=2015-04 |Autor=Julian Reschke}}</ref>
|}
|}


Zeile 137: Zeile 138:
! Nachricht
! Nachricht
! Bedeutung
! Bedeutung
|- id="code400"
|-
! {{Anker|code400}}400
! 400
| {{lang|en|''Bad Request''}}
| ''{{lang|en|Bad Request}}''
| Die Anfrage-Nachricht war fehlerhaft aufgebaut.
| Die Anfrage-Nachricht war fehlerhaft aufgebaut.
|- id="code401"
|-
! {{Anker|code401}}401
! 401
| {{lang|en|''Unauthorized''}}
| ''{{lang|en|Unauthorized}}''
| Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im „WWW-Authenticate“-Header-Feld der Antwort übermittelt.
| Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im „WWW-Authenticate“-Header-Feld der Antwort übermittelt.
|- id="code402"
|-
! {{Anker|code402}}402
! 402
| {{lang|en|''Payment Required''}}
| ''{{lang|en|Payment Required}}''
| Bezahlung benötigt. Dieser Status ist für zukünftige HTTP-Protokolle reserviert.
| Bezahlung benötigt. Dieser Status ist für zukünftige HTTP-Protokolle reserviert.
|- id="code403"
|-
! {{Anker|code403}}403
! 403
| {{lang|en|''Forbidden''}}
| ''{{lang|en|Forbidden}}''
| Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist oder ein als HTTPS konfigurierter URL nur mit HTTP aufgerufen wurde.
| Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist oder ein als HTTPS konfigurierter URL nur mit HTTP aufgerufen wurde.
|- id="code404"
|-
! {{Anker|code404}}404
! 404
| {{lang|en|''Not Found''}}
| ''{{lang|en|Not Found}}''
| Die angeforderte Ressource wurde nicht gefunden. Dieser Statuscode kann ebenfalls verwendet werden, um eine Anfrage ohne näheren Grund abzuweisen. Links, die auf solche Fehlerseiten verweisen, werden auch als [[Toter Link|Tote Links]] bezeichnet. „404“ gilt zudem als verbreitetes [[Memes|Meme]].
| Die angeforderte Ressource wurde nicht gefunden. Dieser Statuscode kann ebenfalls verwendet werden, um eine Anfrage ohne näheren Grund abzuweisen. Links, die auf solche Fehlerseiten verweisen, werden auch als [[Toter Link|Tote Links]] bezeichnet. „404“ gilt zudem als verbreitetes [[Meme (Kulturphänomen)|Meme]].
|- id="code405"
|-
! {{Anker|code405}}405
! 405
| {{lang|en|''Method Not Allowed''}}
| ''{{lang|en|Method Not Allowed}}''
| Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im „Allow“-Header-Feld der Antwort übermittelt.
| Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im „Allow“-Header-Feld der Antwort übermittelt.
|- id="code406"
|-
! {{Anker|code406}}406
! 406
| {{lang|en|''Not Acceptable''}}
| ''{{lang|en|Not Acceptable}}''
| Die angeforderte Ressource steht nicht in der gewünschten Form zur Verfügung. Gültige „Content-Type“-Werte können in der Antwort übermittelt werden.
| Die angeforderte Ressource steht nicht in der gewünschten Form zur Verfügung. Gültige „Content-Type“-Werte können in der Antwort übermittelt werden.
|- id="code407"
|-
! {{Anker|code407}}407
! 407
| {{lang|en|''Proxy Authentication Required''}}
| ''{{lang|en|Proxy Authentication Required}}''
| Analog zum Statuscode 401 ist hier zunächst eine Authentifizierung des Clients gegenüber dem verwendeten Proxy erforderlich. Wie die Authentifizierung durchgeführt werden soll, wird im „Proxy-Authenticate“-Header-Feld der Antwort übermittelt.
| Analog zum Statuscode 401 ist hier zunächst eine Authentifizierung des Clients gegenüber dem verwendeten Proxy erforderlich. Wie die Authentifizierung durchgeführt werden soll, wird im „Proxy-Authenticate“-Header-Feld der Antwort übermittelt.
|- id="code408"
|-
! {{Anker|code408}}408
! 408
| {{lang|en|''Request Timeout''}}
| ''{{lang|en|Request Timeout}}''
| Innerhalb der vom Server erlaubten Zeitspanne wurde keine vollständige Anfrage des Clients empfangen.
| Innerhalb der vom Server erlaubten Zeitspanne wurde keine vollständige Anfrage des Clients empfangen.
|- id="code409"
|-
! {{Anker|code409}}409
! 409
| {{lang|en|''Conflict''}}
| ''{{lang|en|Conflict}}''
| Die Anfrage wurde unter falschen Annahmen gestellt. Im Falle einer PUT-Anfrage kann dies zum Beispiel auf eine zwischenzeitliche Veränderung der Ressource durch Dritte zurückgehen.
| Die Anfrage wurde unter falschen Annahmen gestellt. Im Falle einer PUT-Anfrage kann dies zum Beispiel auf eine zwischenzeitliche Veränderung der Ressource durch Dritte zurückgehen.
|- id="code410"
|-
! {{Anker|code410}}410
! 410
| {{lang|en|''Gone''}}
| ''{{lang|en|Gone}}''
| Die angeforderte Ressource wird nicht länger bereitgestellt und wurde dauerhaft entfernt.
| Die angeforderte Ressource wird nicht länger bereitgestellt und wurde dauerhaft entfernt.
|- id="code411"
|-
! {{Anker|code411}}411
! 411
| {{lang|en|''Length Required''}}
| ''{{lang|en|Length Required}}''
| Die Anfrage kann ohne ein „Content-Length“-Header-Feld nicht bearbeitet werden.
| Die Anfrage kann ohne ein „Content-Length“-Header-Feld nicht bearbeitet werden.
|- id="code412"
|-
! {{Anker|code412}}412
! 412
| {{lang|en|''Precondition Failed''}}
| ''{{lang|en|Precondition Failed}}''
| Eine in der Anfrage übertragene Voraussetzung, zum Beispiel in Form eines „If-Match“-Header-Felds, traf nicht zu.
| Eine in der Anfrage übertragene Voraussetzung, zum Beispiel in Form eines „If-Match“-Header-Felds, traf nicht zu.
|- id="code413"
|-
! {{Anker|code413}}413
! 413
| {{lang|en|''Payload Too Large''}}
| ''{{lang|en|Payload Too Large}}''
| Die gestellte Anfrage war zu groß, um vom Server bearbeitet werden zu können. Ein „Retry-After“-Header-Feld in der Antwort kann den Client darauf hinweisen, dass die Anfrage eventuell zu einem späteren Zeitpunkt bearbeitet werden könnte.
| Die gestellte Anfrage war zu groß, um vom Server bearbeitet werden zu können. Ein „Retry-After“-Header-Feld in der Antwort kann den Client darauf hinweisen, dass die Anfrage eventuell zu einem späteren Zeitpunkt bearbeitet werden könnte.
|- id="code414"
|-
! {{Anker|code414}}414
! 414
| {{lang|en|''URI Too Long''}}<ref>https://www.iana.org/assignments/http-status-codes/</ref>
| ''{{lang|en|URI Too Long}}''<ref>[https://www.iana.org/assignments/http-status-codes/ iana.org]</ref>
| Die [[Uniform Resource Identifier|URI]] bzw. [[Uniform Resource Locator|URL]] der Anfrage war zu lang. Ursache ist oft eine Endlosschleife aus Redirects.
| Die [[Uniform Resource Identifier|URI]] bzw. [[Uniform Resource Locator|URL]] der Anfrage war zu lang. Ursache ist oft eine Endlosschleife aus Redirects.
|- id="code415"
|-
! {{Anker|code415}}415
! 415
| {{lang|en|''Unsupported Media Type''}}
| ''{{lang|en|Unsupported Media Type}}''
| Der Inhalt der Anfrage wurde mit ungültigem oder nicht erlaubtem Medientyp übermittelt.
| Der Inhalt der Anfrage wurde mit ungültigem oder nicht erlaubtem Medientyp übermittelt.
|- id="code416"
|-
! {{Anker|code416}}416
! 416
| {{lang|en|''Range Not Satisfiable''}}
| ''{{lang|en|Range Not Satisfiable}}''
| Der angeforderte Teil einer Ressource war ungültig oder steht auf dem Server nicht zur Verfügung.
| Der angeforderte Teil einer Ressource war ungültig oder steht auf dem Server nicht zur Verfügung.
|- id="code417"
|-
! {{Anker|code417}}417
! 417
| {{lang|en|''Expectation Failed''}}
| ''{{lang|en|Expectation Failed}}''
| Verwendet im Zusammenhang mit einem „Expect“-Header-Feld. Das im „Expect“-Header-Feld geforderte Verhalten des Servers kann nicht erfüllt werden.
| Verwendet im Zusammenhang mit einem „Expect“-Header-Feld. Das im „Expect“-Header-Feld geforderte Verhalten des Servers kann nicht erfüllt werden.
|- id="code421"
|-
! {{Anker|code421}}421
! 421
| {{lang|en|''Misdirected Request''}}
| ''{{lang|en|Misdirected Request}}''
| Die Anfrage wurde an einen Server gesendet, der nicht in der Lage ist, eine Antwort zu senden. Eingeführt in [[HTTP/2]].
| Die Anfrage wurde an einen Server gesendet, der nicht in der Lage ist, eine Antwort zu senden. Eingeführt in [[HTTP/2]].
|- id="code422"
|-
! {{Anker|code422}}422
! 422
| {{lang|en|''Unprocessable Entity''}}
| ''{{lang|en|Unprocessable Entity}}''
| Verwendet, wenn weder die Rückgabe von Statuscode 415 noch 400 gerechtfertigt wäre, eine Verarbeitung der Anfrage jedoch zum Beispiel wegen [[Semantik|semantischer]] Fehler abgelehnt wird.<ref name="RFC4918">RFC 4918 HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</ref>
| Verwendet, wenn weder die Rückgabe von Statuscode 415 noch 400 gerechtfertigt wäre, eine Verarbeitung der Anfrage jedoch zum Beispiel wegen [[Semantik|semantischer]] Fehler abgelehnt wird.<ref name="RFC4918" />
|- id="code423"
|-
! {{Anker|code423}}423
! 423
| {{lang|en|''Locked''}}
| ''{{lang|en|Locked}}''
| Die angeforderte Ressource ist zurzeit gesperrt.<ref name="RFC4918" />
| Die angeforderte Ressource ist zurzeit gesperrt.<ref name="RFC4918" />
|- id="code424"
|-
! {{Anker|code424}}424
! 424
| {{lang|en|''Failed Dependency''}}
| ''{{lang|en|Failed Dependency}}''
| Die Anfrage konnte nicht durchgeführt werden, weil sie das Gelingen einer anderen Anfrage voraussetzt.<ref name="RFC4918" />
| Die Anfrage konnte nicht durchgeführt werden, weil sie das Gelingen einer anderen Anfrage voraussetzt.<ref name="RFC4918" />
|- id="code425"
|-
! {{Anker|code425}}425
! 425
| {{lang|en|''Too Early''}}
| ''{{lang|en|Too Early}}''
| Der Server bittet den Client die Anfrage erneut zu senden, da die TLS-Verbindung noch nicht vollständig hergestellt wurde.<ref>RFC 8470</ref> Dies soll einen [[Replay-Angriff]] verhindern.
| Der Server bittet den Client die Anfrage erneut zu senden, da die TLS-Verbindung noch nicht vollständig hergestellt wurde.<ref>{{RFC-Internet |RFC=8470 |Titel=Using Early Data in HTTP |Datum=2018-09}}</ref> Dies soll einen [[Replay-Angriff]] verhindern.
|- id="code426"
|-
! {{Anker|code426}}426
! 426
| {{lang|en|''Upgrade Required''}}
| ''{{lang|en|Upgrade Required}}''
| Der Server verlangt vom Client, dass er die Anfrage mit einem anderen Protokoll wiederholt.<ref>RFC 7231. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. Abschnitt 6.5.15.</ref> Ein Anwendungsfall ist das Umschalten auf HTTP mit Transport Layer Security.<ref name="RFC2817">RFC 2817. Upgrading to TLS within HTTP/1.1.</ref>
| Der Server verlangt vom Client, dass er die Anfrage mit einem anderen Protokoll wiederholt.<ref>{{RFC-Internet |RFC=7231 |Titel=Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |Datum=2014-06 |Autor=Roy Fielding, Julian Reschke |Abschnitt=6.5.15 |Abschnittstitel=426 Upgrade Required}}</ref> Ein Anwendungsfall ist das Umschalten auf HTTP mit Transport Layer Security.<ref name="RFC2817" />
|- id="code428"
|-
! {{Anker|code428}}428
! 428
| {{lang|en|''Precondition Required''}}
| ''{{lang|en|Precondition Required}}''
| Für die Anfrage waren nicht alle Vorbedingungen erfüllt. Dieser Statuscode soll Probleme durch [[Race Condition]]s verhindern, indem eine Manipulation oder Löschen nur erfolgt, wenn der Client dies auf Basis einer aktuellen Ressource anfordert (Beispielsweise durch Mitliefern eines aktuellen [[HTTP ETag|ETag-Header]]).<ref name="RFC6585">RFC 6585 Additional HTTP Status Codes</ref>
| Für die Anfrage waren nicht alle Vorbedingungen erfüllt. Dieser Statuscode soll Probleme durch [[Race Condition]]s verhindern, indem eine Manipulation oder Löschen nur erfolgt, wenn der Client dies auf Basis einer aktuellen Ressource anfordert (Beispielsweise durch Mitliefern eines aktuellen [[HTTP ETag|ETag-Header]]).<ref name="RFC6585">{{RFC-Internet |RFC=6585 |Titel=Additional HTTP Status Codes |Datum=}}</ref>
|- id="code429"
|-
! {{Anker|code429}}429
! 429
| {{lang|en|''Too Many Requests''}}
| ''{{lang|en|Too Many Requests}}''
| Der Client hat zu viele Anfragen in einem bestimmten Zeitraum gesendet.<ref name="RFC6585" />
| Der Client hat zu viele Anfragen in einem bestimmten Zeitraum gesendet.<ref name="RFC6585" />
|- id="code431"
|-
! {{Anker|code431}}431
! 431
| {{lang|en|''Request Header Fields Too Large''}}
| ''{{lang|en|Request Header Fields Too Large}}''
| Die Maximallänge eines Headerfelds oder des Gesamtheaders wurde überschritten.<ref name="RFC6585" />
| Die Maximallänge eines Headerfelds oder des Gesamtheaders wurde überschritten.<ref name="RFC6585" />
|- id="code451"
|-
! {{Anker|code451}}451
! 451
| {{lang|en|''Unavailable For Legal Reasons''}}
| ''{{lang|en|Unavailable For Legal Reasons}}''
| Dieser Statuscode soll darauf hinweisen, dass die angeforderte Ressource aufgrund von gesetzlichen Bestimmungen (Copyrighteinschränkungen, Zensur etc., eventuell beschränkt auf ein bestimmtes Land) nicht verfügbar ist.<ref>[https://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00 A New HTTP Status Code for Legally-restricted Resources]</ref>
| Dieser Statuscode soll darauf hinweisen, dass die angeforderte Ressource aufgrund von gesetzlichen Bestimmungen (Copyrighteinschränkungen, Zensur etc., eventuell [[Geoblocking|beschränkt auf ein bestimmtes Land]]) nicht verfügbar ist.<ref>[https://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00 A New HTTP Status Code for Legally-restricted Resources]</ref>
Er wurde im Juni 2012 von Google-Mitarbeiter [[Tim Bray]] bei der [[Internet Engineering Task Force|IETF]] eingereicht<ref>[https://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00 tools.ietf.org]</ref> und gilt seit dem 17. Dezember 2015 als angenommen.<ref>[https://datatracker.ietf.org/doc/draft-ietf-httpbis-legally-restricted-status/ datatracker.ietf.org]</ref> Bray schlug die Nummer 451 in Anspielung auf [[Ray Bradbury]]s Roman [[Fahrenheit 451]] vor und fügte einen Dank an den Autor an.<ref>[https://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00#page-5 Appendix A]</ref>
Er wurde im Juni 2012 von Google-Mitarbeiter [[Tim Bray]] bei der [[Internet Engineering Task Force|IETF]] eingereicht<ref>[https://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00 tools.ietf.org]</ref> und gilt seit dem 17. Dezember 2015 als angenommen.<ref>[https://datatracker.ietf.org/doc/draft-ietf-httpbis-legally-restricted-status/ datatracker.ietf.org]</ref> Bray schlug die Nummer 451 in Anspielung auf [[Ray Bradbury]]s Roman [[Fahrenheit 451]] vor und fügte einen Dank an den Autor an.<ref>[https://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00#page-5 Appendix A]</ref>
|-
|-
|colspan="3"| Beispiele für weitere, per Juli 2020 nicht in der ''Hypertext Transfer Protocol (HTTP) Status Code Registry''<ref name="status-code-registry">[https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml iana.org]</ref> aufgeführte Codes:
|colspan="3"| Beispiele für weitere nicht in der ''Hypertext Transfer Protocol (HTTP) Status Code Registry''<ref name="status-code-registry">[https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml iana.org]</ref> aufgeführte Codes:
|- id="code418"
|-
! {{Anker|code418}}418
! 418
| {{lang|en|''I’m a teapot''}}
| ''{{lang|en|[[Hyper Text Coffee Pot Control Protocol|I’m a teapot]]}}''
| Dieser Code ist als [[Aprilscherz]] der [[Internet Engineering Task Force|IETF]] zu verstehen. Innerhalb eines scherzhaften Protokolls zum Kaffeekochen, des [[Hyper Text Coffee Pot Control Protocol]]s,<ref>''Error 418 I’m a Teapot''. It started in 1998, described in the RFC 2324 of 1998.</ref> zeigt er an, dass fälschlicherweise eine [[Teekanne]] anstatt einer [[Kaffeekanne]] verwendet wurde. Dieser Scherz-Statuscode ist auf einigen Websites zu finden, obwohl er weder Bestandteil von HTTP ist noch in der ''Status Code Registry''<ref name="status-code-registry" /> definiert ist. Er soll zukünftig als „reserviert“ gelistet werden.<ref>[https://tools.ietf.org/html/draft-nottingham-thanks-larry-00 Reserving the 418 HTTP Status Code draft-nottingham-thanks-larry-00]</ref>
| Dieser Code wurde von der [[Internet Engineering Task Force|IETF]] als [[Aprilscherz]] in einem [[Request for Comments#Humor in RFC|RFC]] veröffentlicht. Innerhalb eines scherzhaften Protokolls zum Kaffeekochen, des [[Hyper Text Coffee Pot Control Protocol]]s, zeigt er an, dass fälschlicherweise eine [[Teekanne]] anstatt einer [[Kaffeekanne]] verwendet wurde.<ref>{{RFC-Internet |RFC=2324 |Titel=Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0) |Datum=1998-04-01}}</ref> Einige Server verwenden den Statuscode, um anzuzeigen, dass sie eine Anfrage nicht beantworten möchten, etwa bei automatisierten Anfragen. Durch die Verbreitung ist der Code mittlerweile nicht für andere Zwecke verwendbar.<ref>{{RFC-Internet |RFC=9110 |Titel=HTTP Semantics |Datum=2022-06 |Autor=R. Fielding, M. Nottingham, J. Reschke |Abschnitt=15.5.19 |Abschnittstitel=418 (Unused)}}</ref> In der ''Status Code Registry'' ist der Code reserviert, allerdings als „Unused“ anstatt in der scherzhaften Bedeutung.<ref name="status-code-registry" />
|- id="code420"
|-
! {{Anker|code420}}420
! 420
| {{lang|en|''Policy Not Fulfilled''}}
| ''{{lang|en|Policy Not Fulfilled}}''
| In [[W3C]] PEP (Working Draft 21. November 1997)<ref>[https://www.w3.org/TR/WD-http-pep w3.org] W3C PEP (Working Draft 21. November 1997)</ref> wird dieser Code vorgeschlagen, um mitzuteilen, dass eine Bedingung nicht erfüllt wurde.
| In [[World Wide Web Consortium|W3C]] PEP (Working Draft 21. November 1997)<ref>[https://www.w3.org/TR/WD-http-pep w3.org] W3C PEP (Working Draft 21. November 1997)</ref> wird dieser Code vorgeschlagen, um mitzuteilen, dass eine Bedingung nicht erfüllt wurde.
|- id="code444"
|-
! {{Anker|code444}}444
! 444
| {{lang|en|''No Response''}}
| ''{{lang|en|No Response}}''
| In [[nginx]]-Logs verwendet, um anzuzeigen, dass der Server keine Informationen zum Client zurückgesendet und die Verbindung geschlossen hat.
| In [[nginx]]-Logs verwendet, um anzuzeigen, dass der Server keine Informationen zum Client zurückgesendet und die Verbindung geschlossen hat.
|- id="code449"
|-
! {{Anker|code449}}449
! 449
| {{lang|en|''The request should be retried after doing the appropriate action''}}
| ''{{lang|en|The request should be retried after doing the appropriate action}}''
| Genutzt in Antworten des [[Microsoft Exchange Server]]s.<ref>[https://blogs.msdn.microsoft.com/openspecification/2011/06/09/exchange-activesync-provisioning/ Microsoft Open Specifications Support Team Blog] auf [[Microsoft Developer Network|MSDN]]. Abgerufen am 2. Mrz. 2016</ref>
| Genutzt in Antworten des [[Microsoft Exchange Server]]s.<ref>[https://blogs.msdn.microsoft.com/openspecification/2011/06/09/exchange-activesync-provisioning/ Microsoft Open Specifications Support Team Blog.] [[Microsoft Developer Network|MSDN]]. Abgerufen am 2. Mrz. 2016</ref>
|- id="code499"
|-
! {{Anker|code499}}499
! 499
| {{lang|en|''Client Closed Request''}}
| ''{{lang|en|Client Closed Request}}''
| Ein nicht standardmäßiger Statuscode, der von [[nginx]] für den Fall eingeführt wurde, dass ein Client die Verbindung schließt, während nginx die Anforderung verarbeitet.
| Ein nicht standardisierter Statuscode, der von [[nginx]] für den Fall eingeführt wurde, dass ein Client die Verbindung schließt, während nginx die Anforderung verarbeitet.
|}
|}


Zeile 282: Zeile 283:
! Nachricht
! Nachricht
! Bedeutung
! Bedeutung
|- id="code500"
|-
! {{Anker|code500}}500
! 500
| {{lang|en|''Internal Server Error''}}
| ''{{lang|en|Internal Server Error}}''
| Dies ist ein „Sammel-Statuscode“ für unerwartete Serverfehler.
| Dies ist ein „Sammel-Statuscode“ für unerwartete Serverfehler.
|- id="code501"
|-
! {{Anker|code501}}501
! 501
| {{lang|en|''Not Implemented''}}
| ''{{lang|en|Not Implemented}}''
| Die Funktionalität, um die Anfrage zu bearbeiten, wird von diesem Server nicht bereitgestellt. Ursache ist zum Beispiel eine unbekannte oder nicht unterstützte HTTP-Methode.
| Die Funktionalität, um die Anfrage zu bearbeiten, wird von diesem Server nicht bereitgestellt. Ursache ist zum Beispiel eine unbekannte oder nicht unterstützte HTTP-Methode.
|- id="code502"
|-
! {{Anker|code502}}502
! 502
| {{lang|en|''Bad Gateway''}}
| ''{{lang|en|Bad Gateway}}''
| Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er seinerseits eine ungültige Antwort erhalten hat.
| Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er seinerseits eine ungültige Antwort erhalten hat.
|- id="code503"
|-
! {{Anker|code503}}503
! 503
| {{lang|en|''Service Unavailable''}}
| ''{{lang|en|Service Unavailable}}''
| Der Server steht temporär nicht zur Verfügung, zum Beispiel wegen Überlastung oder Wartungsarbeiten. Ein „Retry-After“-Header-Feld in der Antwort kann den Client auf einen Zeitpunkt hinweisen, zu dem die Anfrage eventuell bearbeitet werden könnte.
| Der Server steht temporär nicht zur Verfügung, zum Beispiel wegen Überlastung oder Wartungsarbeiten. Ein „Retry-After“-Header-Feld in der Antwort kann den Client auf einen Zeitpunkt hinweisen, zu dem die Anfrage eventuell bearbeitet werden könnte.
|- id="code504"
|-
! {{Anker|code504}}504
! 504
| {{lang|en|''Gateway Timeout''}}
| ''{{lang|en|Gateway Timeout}}''
| Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er innerhalb einer festgelegten Zeitspanne keine Antwort von seinerseits benutzten Servern oder Diensten erhalten hat.
| Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er innerhalb einer festgelegten Zeitspanne keine Antwort von seinerseits benutzten Servern oder Diensten erhalten hat.
|- id="code505"
|-
! {{Anker|code505}}505
! 505
| {{lang|en|''HTTP Version not supported''}}
| ''{{lang|en|HTTP Version not supported}}''
| Die benutzte HTTP-Version (gemeint ist die Zahl vor dem Punkt) wird vom Server nicht unterstützt oder abgelehnt.
| Die benutzte HTTP-Version (gemeint ist die Zahl vor dem Punkt) wird vom Server nicht unterstützt oder abgelehnt.
|- id="code506"
|-
! {{Anker|code506}}506
! 506
| {{lang|en|''Variant Also Negotiates''}}
| ''{{lang|en|Variant Also Negotiates}}''
| Die [[Inhaltsvereinbarung]] der Anfrage ergibt einen [[Zirkelbezug]].<ref name="RFC2295">RFC 2295</ref>
| Die [[Content Negotiation|Inhaltsvereinbarung]] der Anfrage ergibt einen [[Zirkelbezug]].<ref name="RFC2295" />
|- id="code507"
|-
! {{Anker|code507}}507
! 507
| {{lang|en|''Insufficient Storage''}}
| ''{{lang|en|Insufficient Storage}}''
| Die Anfrage konnte nicht bearbeitet werden, weil der Speicherplatz des Servers dazu derzeit nicht mehr ausreicht.<ref name="RFC4918" />
| Die Anfrage konnte nicht bearbeitet werden, weil der Speicherplatz des Servers dazu derzeit nicht mehr ausreicht.<ref name="RFC4918" />
|- id="code508"
|-
! {{Anker|code508}}508
! 508
| {{lang|en|''Loop Detected''}}
| ''{{lang|en|Loop Detected}}''
| Die Operation wurde nicht ausgeführt, weil die Ausführung in eine [[Endlosschleife]] gelaufen wäre. Definiert in der Binding-Erweiterung für WebDAV gemäß RFC 5842, weil durch Bindings zyklische Pfade zu WebDAV-Ressourcen entstehen können.
| Die Operation wurde nicht ausgeführt, weil die Ausführung in eine [[Endlosschleife (Programmierung)|Endlosschleife]] gelaufen wäre. Definiert in der Binding-Erweiterung für WebDAV gemäß <nowiki>RFC&nbsp;5842</nowiki>,<ref name="RFC5842" /> weil durch Bindings zyklische Pfade zu WebDAV-Ressourcen entstehen können.
|- id="code509"
|-
! {{Anker|code509}}509
! 509
| {{lang|en|''Bandwidth Limit Exceeded''}}
| ''{{lang|en|Bandwidth Limit Exceeded}}''
| Die Anfrage wurde verworfen, weil sonst die verfügbare Bandbreite überschritten würde (inoffizielle Erweiterung einiger Server).
| Die Anfrage wurde verworfen, weil sonst die verfügbare Bandbreite überschritten würde (inoffizielle Erweiterung einiger Server).
|- id="code510"
|-
! {{Anker|code510}}510
! 510
| {{lang|en|''Not Extended''}}
| ''{{lang|en|Not Extended}}''
| Die Anfrage enthält nicht alle Informationen, welche die angefragte Server-Extension zwingend erwartet.<ref name="RFC2774">RFC 2774</ref>
| Die Anfrage enthält nicht alle Informationen, welche die angefragte Server-Extension zwingend erwartet.<ref name="RFC2774" />
|- id="code511"
|-
! {{Anker|code511}}511
! 511
| {{lang|en|''Network Authentication Required''}}
| ''{{lang|en|Network Authentication Required}}''
| Der Client muss sich zuerst authentifizieren, um Zugang zum Netzwerk zu erhalten.<ref name="RFC6585" />
| Der Client muss sich zuerst authentifizieren, um Zugang zum Netzwerk zu erhalten.<ref name="RFC6585" />
|}
|}
Zeile 335: Zeile 336:
Manche Softwarehersteller verwenden den Bereich ab 900 für [[proprietär]]e Statuscodes.<ref>Beispielsweise liefert Linkedin bei Zugriff via <code>curl</code> den Code 999: <code style="white-space:nowrap">curl -kI <nowiki>https://www.linkedin.com/company/linkedin/</nowiki></code> ([https://stackoverflow.com/questions/27231113/999-error-code-on-head-request-to-linkedin vgl. Stackoverflow])</ref>
Manche Softwarehersteller verwenden den Bereich ab 900 für [[proprietär]]e Statuscodes.<ref>Beispielsweise liefert Linkedin bei Zugriff via <code>curl</code> den Code 999: <code style="white-space:nowrap">curl -kI <nowiki>https://www.linkedin.com/company/linkedin/</nowiki></code> ([https://stackoverflow.com/questions/27231113/999-error-code-on-head-request-to-linkedin vgl. Stackoverflow])</ref>
Dieser Zahlenbereich wurde in den RFC-Dokumenten nie erwähnt und liegt offensichtlich jenseits der standardisierten Codes. Dadurch ist er leicht als Sonderfall erkennbar.
Dieser Zahlenbereich wurde in den RFC-Dokumenten nie erwähnt und liegt offensichtlich jenseits der standardisierten Codes. Dadurch ist er leicht als Sonderfall erkennbar.

=== Zwischenspeicherung von Warncodes (veraltet) ===
Die folgenden Caching-Warncodes wurden in RFC 7234 festgelegt. Im Gegensatz zu den anderen oben genannten Statuscodes wurden diese nicht als Antwortstatus im HTTP-Protokoll gesendet, sondern als Teil des HTTP-Headers "Warning".<ref>{{Cite web|lang=en|title=Hypertext Transfer Protocol (HTTP/1.1): Caching|url=https://datatracker.ietf.org/doc/html/rfc7234#section-5.5|access-date=2021-09-25|website=datatracker.ietf.org}}</ref><ref>{{Cite web|title=Warning - HTTP {{!}} MDN|lang=en|url=https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Warning|access-date=2021-08-15|website=developer.mozilla.org|language=en-US}} [[File:CC BY-SA icon.svg|50px]] Some text was copied from this source, which is available under a [https://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5 Generic (CC BY-SA 2.5)] license.</ref>

Da dieser "Warning"-Header häufig weder von den Servern gesendet noch von den Clients bestätigt wird, wurden dieser Header und seine Codes von der HTTP-Arbeitsgruppe im Jahr 2022 mit RFC 9111 überflüssig gemacht.<ref>{{Cite web |lang=en|date=June 2022 |title=RFC 9111: HTTP Caching, Section 5.5 "Warning" |url=https://www.rfc-editor.org/rfc/rfc9111#section-5.5}}</ref>
; {{Anker |code110}} 110 Response is Stale
: Die von einem Cache bereitgestellte Antwort ist veraltet (das Alter des Inhalts übersteigt ein durch einen Cache-Control-Header oder eine heuristisch gewählte Lebensdauer festgelegtes Höchstalter).<ref>[https://http-statuscode.com/de/code/1XX/110 HTTP Statuscode 110] - Response is Stale (Veraltet)</ref>
; {{Anker |code111}} 111 Revalidation Failed
: Der Cache war nicht in der Lage, die Antwort zu validieren, da der Ursprungsserver nicht erreicht werden konnte.<ref>[https://http-statuscode.com/de/code/1XX/111 HTTP Statuscode 110] - Revalidation Failed (Veraltet)</ref>
; {{Anker |code112}} 112 Disconnected Operation
: Der Cache ist absichtlich vom übrigen Netz getrennt.<ref>[https://http-statuscode.com/de/code/1XX/112 HTTP Statuscode 112] - Disconnected Operation (Veraltet)</ref>
; {{Anker |code113}} 113 Heuristic Expiration
: Der Cache hat heuristisch eine Frischezeit von mehr als 24 Stunden gewählt, und das Alter der Antwort ist größer als 24 Stunden.<ref>[https://http-statuscode.com/de/code/1XX/113 HTTP Statuscode 113] - Heuristic Expiration (Veraltet)</ref>
; {{Anker |code199}} 199 Miscellaneous Warning
: Beliebige, unspezifische Warnung. Der Warntext kann protokolliert oder dem Benutzer angezeigt werden.<ref>[https://http-statuscode.com/de/code/1XX/199 HTTP Statuscode 199] - Miscellaneous Warning (Veraltet)</ref>
; {{Anker|code214}} 214 Transformation Applied
: Wird von einem Proxy hinzugefügt, wenn er eine Transformation auf die Darstellung anwendet, z. B. eine Änderung der Inhaltskodierung, des Medientyps oder ähnliches.<ref>[https://http-statuscode.com/de/code/2XX/214 HTTP Statuscode 214] - Transformation Applied (Veraltet)</ref>
; {{Anker |code299}} 299 Miscellaneous Persistent Warning
: Wie 199, aber mit dem Hinweis auf eine anhaltende Warnung.<ref>[https://http-statuscode.com/de/code/2XX/299 HTTP Statuscode 299] - Miscellaneous Persistent Warning (Veraltet)</ref>

== Inoffizielle Statuscodes ==

=== Internet Information Services ===
Der Webserver [[Internet Information Services]] (IIS) von Microsoft erweitert den 4xx-Fehlerbereich, um Fehler bei der Anfrage des Clients zu signalisieren.

; {{Anker|code440}} 440 Login Time-out
: Die Sitzung des Kunden ist abgelaufen und er muss sich erneut anmelden.<ref name="MS_KB941201">
{{cite web|lang=en|url=https://support.microsoft.com/en-us/help/941201/|title=Error message when you try to log on to Exchange 2007 by using Outlook Web Access: "440 Login Time-out"|year=2010|publisher=[[Microsoft]]|access-date=2013-11-13}}</ref><ref>[https://http-statuscode.com/de/code/4XX/440-unofficial HTTP status code 440] - Inoffizieller Statuscode, Microsoft Internet Information Services</ref>
; {{Anker|code449}} 449 Retry With
: Der Server kann der Anfrage nicht nachkommen, weil der Benutzer die erforderlichen Informationen nicht angegeben hat.<ref name="MS_DD891478">{{cite web|lang=en |url=http://msdn.microsoft.com/en-us/library/dd891478(PROT.10).aspx |title=2.2.6 449 Retry With Status Code |year=2009 |publisher=[[Microsoft]] |access-date=2009-10-26 |archive-url=https://web.archive.org/web/20091005090136/http://msdn.microsoft.com/en-us/library/dd891478(PROT.10).aspx |archive-date=2009-10-05 |url-status=live}}</ref>
; {{Anker|code451-MS}} 451 Redirect
: Wird in Exchange ActiveSync verwendet, wenn entweder ein effizienterer Server verfügbar ist oder der Server nicht auf das Postfach des Benutzers zugreifen kann.<ref>{{cite web|lang=en|title=MS-ASCMD, Section 3.1.5.2.2 |url=http://msdn.microsoft.com/en-us/library/gg651019 |publisher=Msdn.microsoft.com |access-date=2015-01-08 |archive-url=https://web.archive.org/web/20150326120838/https://msdn.microsoft.com/en-us/library/gg651019 |archive-date=2015-03-26 |url-status=live}}</ref> Vom Client wird erwartet, dass er den HTTP-AutoDiscover-Vorgang erneut ausführt, um einen geeigneteren Server zu finden.<ref>{{cite web|lang=en|title=Ms-oxdisco|url=http://msdn.microsoft.com/en-us/library/cc433481|publisher=Msdn.microsoft.com|access-date=2015-01-08|archive-url=https://web.archive.org/web/20140731074358/http://msdn.microsoft.com/en-us/library/cc433481|archive-date=2014-07-31|url-status=live}}</ref>

IIS verwendet manchmal zusätzliche dezimale Sub-Codes für spezifischere Informationen. Diese Sub-Codes erscheinen jedoch nur in der Nutzlast der Antwort und in der Dokumentation, nicht anstelle eines eigentlichen HTTP-Status-Codes.

=== Cloudflare ===
Der Reverse-Proxy-Dienst von [[Cloudflare]] erweitert den 5xx-Fehlerbereich, um Probleme mit dem Ursprungsserver zu signalisieren.

; {{Anker|code520}} 520 Web Server Returned an Unknown Error
: Der Ursprungsserver hat eine leere, unbekannte oder unerwartete Antwort an Cloudflare zurückgegeben.<ref>[https://developers.cloudflare.com/support/troubleshooting/cloudflare-errors/troubleshooting-cloudflare-5xx-errors/#error-520-web-server-returns-an-unknown-error Error 520: web server returns an unknown error]</ref><ref>[https://http-statuscode.com/de/code/5XX/520 HTTP status code 520]</ref>
; {{Anker|code521}} 521 Web Server Is Down
: Der Ursprungsserver hat Verbindungen von Cloudflare abgelehnt. Möglicherweise blockieren Sicherheitslösungen auf dem Ursprungsserver legitime Verbindungen von bestimmten Cloudflare-IP-Adressen.<ref>[https://http-statuscode.com/de/code/5XX/521-unofficial HTTP status code 521]</ref>
; {{Anker|code522}} 522 Connection Timed Out
: Cloudflare hat die Kontaktaufnahme mit dem Ursprungsserver abgebrochen.<ref>[https://http-statuscode.com/de/code/5XX/522-unofficial HTTP status code 522]</ref>
; {{Anker|code523}} 523 Origin Is Unreachable
: Cloudflare konnte den Ursprungsserver nicht erreichen; zum Beispiel, wenn die [[DNS]]-Eintrage für den Ursprungsserver falsch sind oder fehlen.<ref>[https://http-statuscode.com/de/code/5XX/523-unofficial HTTP status code 523]</ref>
; {{Anker|code524}} 524 A Timeout Occurred
: Cloudflare war in der Lage, eine TCP-Verbindung zum Ursprungsserver herzustellen, erhielt aber keine zeitnahe HTTP-Antwort.<ref>[https://http-statuscode.com/de/code/5XX/524-unofficial HTTP status code 524]</ref>
; {{Anker|code525}} 525 SSL Handshake Failed
: Cloudflare konnte keinen SSL/TLS-Handshake mit dem Ursprungsserver aushandeln.<ref>[https://http-statuscode.com/de/code/5XX/525-unofficial HTTP status code 525]</ref>
; {{Anker|code526}} 526 Invalid SSL Certificate
: Cloudflare konnte das SSL-Zertifikat auf dem Ursprungs-Webserver nicht validieren.<ref>[https://http-statuscode.com/de/code/5XX/526-unofficial HTTP status code 526]</ref>
; {{Anker|code527}} 527 Railgun Error
: Der Fehler 527 weist auf eine unterbrochene Verbindung zwischen Cloudflare und dem Railgun-Server des Herkunftsservers hin.<ref>[https://http-statuscode.com/de/code/5XX/527-unofficial HTTP status code 527]</ref>
; {{Anker|code530}} 530
: Der Fehler 530 wird zusammen mit einem 1xxx-Fehler zurückgegeben.<ref>[https://http-statuscode.com/de/code/5XX/530-unofficial HTTP status code 530]</ref>


== Siehe auch ==
== Siehe auch ==
Zeile 399: Zeile 344:


== Weblinks ==
== Weblinks ==
* [https://www.iana.org/assignments/http-status-codes Hypertext Transfer Protocol (HTTP) Status Code Registry] auf der Website der [[Internet Assigned Numbers Authority|IANA]]
* [https://www.iana.org/assignments/http-status-codes Hypertext Transfer Protocol (HTTP) Status Code Registry.] [[Internet Assigned Numbers Authority|IANA]]
* [https://www.askapache.com/htaccess/apache-status-code-headers-errordocument/ apache-status-code-headers] auf askapache.com
* [https://support.microsoft.com/?id=318380 Microsoft Internet Information Server Status Codes and Sub-Codes] bei ''support.microsoft.com''
* {{RFC-Internet |RFC=7231 |Titel=Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |Datum=2014-06 |Autor=Roy Fielding, Julian Reschke |Abschnitt=6 |Abschnittstitel=Response Status Codes}}
* [https://http-statuscode.com/de/home HTTP Statuscodes] bei ''http-statuscode.com''
* [https://www.askapache.com/htaccess/apache-status-code-headers-errordocument/ apache-status-code-headers] bei ''askapache.com''
* Roy Fielding, Julian Reschke: [[rfc:7231#section-6.3.4|Section 6.3.4 – ''Response Status Codes'']]. RFC 7231 – ''Hypertext Transfer Protocol'' (HTTP/1.1), [[IETF]], Juni 2014


== Einzelnachweise ==
== Einzelnachweise ==
<references responsive />
<references responsive>
<ref name="RFC2295">
{{RFC-Internet |RFC=2295 |Titel=Transparent Content Negotiation in HTTP |Datum=1998-03}}
</ref>
<ref name="RFC2518">
{{RFC-Internet |RFC=2518 |Titel=HTTP Extensions for Distributed Authoring – WEBDAV |Datum=1999-02}}
</ref>
<ref name="RFC2616">
{{RFC-Internet |RFC=2616 |Titel=HTTP 1.1 |Datum=1999}}
</ref>
<ref name="RFC2774">
{{RFC-Internet |RFC=2774 |Titel=An HTTP Extension Framework |Datum=2000-02}}
</ref>
<ref name="RFC2817">
{{RFC-Internet |RFC=2817 |Titel=Upgrading to TLS Within HTTP/1.1 |Datum=2000-05}}
</ref>
<ref name="RFC4918">
{{RFC-Internet |RFC=4918 |Titel=HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) |Datum=2007-06}}
</ref>
<ref name="RFC5842">
{{RFC-Internet |RFC=5842 |Titel=Binding Extensions to Web Distributed Authoring and Versioning (WebDAV) |Datum=2010-04}}
</ref>
</references>


[[Kategorie:HTTP-Statuscode| ]]
{{SORTIERUNG:HTTPstatuscode}}
[[Kategorie:HTTP]]

Aktuelle Version vom 6. Mai 2026, 14:11 Uhr

Ein HTTP-Statuscode wird von einem Server auf jede HTTP-Anfrage als Antwort geliefert. Auf der anfragenden Seite steht dabei ein Client wie beispielsweise ein Webbrowser. Der Server teilt durch den HTTP-Statuscode dem Client mit, ob die Anfrage erfolgreich bearbeitet wurde. Im Fehlerfall gibt der Statuscode Auskunft darüber, wo (beispielsweise über eine Umleitung) oder wie (zum Beispiel mit Authentifizierung) er die gewünschten Informationen erhalten kann. Am bekanntesten sind dabei die Codes 404: „Nicht gefunden“, 403: „Fehlende Zugriffsberechtigung“ und 400: „Fehlerhafte Anfrage“.

Beispiel einer Webseite, die von einem Webserver zusätzlich zum 404 Statuscode gesendet wurde

Die erste Ziffer eines Statuscodes stellt die Statusklasse dar. Sie sind in RFC 9110[1] (ersetzt RFC 2616[2]), sowie RFC 2518,[3] RFC 2817,[4] RFC 2295,[5] RFC 2774[6] und RFC 4918[7] spezifiziert. Einige gehören zum Distributed Authoring (WebDAV).

Neben den in RFC standardisierten Statuscodes verwenden manche Softwarehersteller auch proprietäre Codes für eigens definierte Status- und Fehlermeldungen. Andere Software kann dem Benutzer diese Codes nur als allgemeinen unbekannten Fehler anzeigen; nicht aber eine Übersetzung und Hinweise zum weiteren Vorgehen. Teilweise können die Server den Begleitumständen der Anfrage bereits entnehmen, dass es sich um die zugehörige Spezialsoftware handelt, und geben nur dann die proprietären Codes zurück. In diesem Artikel sind einige proprietäre Codes aufgeführt und entsprechend gekennzeichnet.

Liste der HTTP-Statuscodes

[Bearbeiten | Quelltext bearbeiten]

1xx – Informationen

[Bearbeiten | Quelltext bearbeiten]

Die Bearbeitung der Anfrage dauert noch an.

Code Nachricht Bedeutung
100 Continue Die laufende Anfrage an den Server wurde noch nicht zurückgewiesen. (Wird im Zusammenhang mit dem „Expect 100-continue“-Header-Feld verwendet.[2]) Der Client kann nun mit der potentiell sehr großen Anfrage fortfahren.
101 Switching Protocols Wird verwendet, wenn der Server eine Anfrage mit gesetztem „Upgrade“-Header-Feld empfangen hat und mit dem Wechsel zu einem anderen Protokoll einverstanden ist. Anwendung findet dieser Status-Code beispielsweise im Wechsel von HTTP zu WebSocket.
102 Processing Wird verwendet, um ein Timeout zu vermeiden, während der Server eine zeitintensive Anfrage bearbeitet.[3] Dies ist eine Interim-Antwort, auf die auf derselben Verbindung ohne weitere Client-Anfrage eine endgültige Antwort folgen muss.
103 Early Hints Wird zusammen mit dem „Link“-Header verwendet, um das Vorladen von Ressourcen zu ermöglichen, während der Server die finale Antwort noch vorbereitet.[8]

2xx – Erfolgreiche Operation

[Bearbeiten | Quelltext bearbeiten]

Die Anfrage war erfolgreich, die Antwort kann verwertet werden.

Code Nachricht Bedeutung
200 OK Die Anfrage wurde erfolgreich bearbeitet und das Ergebnis der Anfrage wird in der Antwort übertragen.
201 Created Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wurde vor dem Senden der Antwort erstellt. Das „Location“-Header-Feld enthält eventuell die Adresse der erstellten Ressource.
202 Accepted Die Anfrage wurde akzeptiert, wird aber zu einem späteren Zeitpunkt ausgeführt. Das Gelingen der Anfrage kann nicht garantiert werden.
203 Non-Authoritative Information Der Server agiert als „Transforming Proxy“, erhielt eine 200 OK Antwort von der Quelle und antwortet mit einem veränderten Dokument der Quelle.[9][10]
204 No Content Die Anfrage wurde erfolgreich durchgeführt, die Antwort enthält jedoch bewusst keine Daten.
205 Reset Content Die Anfrage wurde erfolgreich durchgeführt; der Client soll das Dokument neu aufbauen und Formulareingaben zurücksetzen.
206 Partial Content Der angeforderte Teil wurde erfolgreich übertragen (wird im Zusammenhang mit einem „Content-Range“-Header-Feld oder dem Content-Type multipart/byteranges verwendet). Kann einen Client über Teil-Downloads informieren (wird zum Beispiel von Wget genutzt, um den Downloadfortschritt zu überwachen oder einen Download in mehrere Streams aufzuteilen).
207 Multi-Status WebDAV RFC 4918[7] – Die Antwort enthält ein in WebDAV spezifiziertes XML-Dokument, das mehrere Statuscodes zu unabhängig voneinander durchgeführten Operationen enthält.
208 Already Reported WebDAV RFC 5842,[11] – Die Mitglieder einer WebDAV-Bindung wurden bereits zuvor aufgezählt und sind in dieser Anfrage nicht mehr vorhanden.
226 IM Used RFC 3229[12] – Der Server hat eine GET-Anforderung für die Ressource erfüllt, die Antwort ist eine Darstellung des Ergebnisses von einer oder mehrerer Instanz-Manipulationen, bezogen auf die aktuelle Instanz.

3xx – Umleitung

[Bearbeiten | Quelltext bearbeiten]

Um eine erfolgreiche Bearbeitung der Anfrage sicherzustellen, sind weitere Schritte seitens des Clients erforderlich.

Code Nachricht Bedeutung
300 Multiple Choices Die angeforderte Ressource steht in verschiedenen Arten zur Verfügung. Die Antwort enthält eine Liste der verfügbaren Arten. Das „Location“-Header-Feld enthält eventuell die Adresse der vom Server bevorzugten Repräsentation.
301 Moved Permanently Die angeforderte Ressource steht ab sofort unter der im „Location“-Header-Feld angegebenen Adresse bereit (auch Redirect genannt). Die alte Adresse ist nicht länger gültig.
302 Found (Moved Temporarily) Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit.[13] Die alte Adresse bleibt gültig. Die Browser folgen meist mit einem GET, auch wenn der ursprüngliche Request ein POST war. Wird in HTTP/1.1 je nach Anwendungsfall durch die Statuscodes 303 oder 307 ersetzt. 302-Weiterleitung ist aufgrund eines Suchmaschinen-Fehlers, des URL-Hijackings, in Kritik geraten.
303 See Other Die Antwort auf die durchgeführte Anfrage lässt sich unter der im „Location“-Header-Feld angegebenen Adresse beziehen. Der Browser soll mit einem GET folgen, auch wenn der ursprüngliche Request ein POST war.
304 Not Modified Der Inhalt der angeforderten Ressource hat sich seit der letzten Abfrage des Clients nicht verändert und wird deshalb nicht übertragen. Zu den Einzelheiten siehe Browser-Cache-Versionsvergleich.
305 Use Proxy Die angeforderte Ressource ist nur über einen Proxy erreichbar. Das „Location“-Header-Feld enthält die Adresse des Proxys.
306 (reserviert) 306 wird nicht mehr verwendet, ist aber reserviert. Es wurde für „Switch Proxy“ verwendet.
307 Temporary Redirect Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig. Der Browser soll mit derselben Methode folgen wie beim ursprünglichen Request (d. h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu 302/303.
308 Permanent Redirect Die angeforderte Ressource steht ab sofort unter der im „Location“-Header-Feld angegebenen Adresse bereit, die alte Adresse ist nicht länger gültig. Der Browser soll mit derselben Methode folgen wie beim ursprünglichen Request (d. h. einem POST folgt ein POST). Dies ist der wesentliche Unterschied zu 301.[14]

4xx – Client-Fehler

[Bearbeiten | Quelltext bearbeiten]

Die Ursache des Scheiterns der Anfrage liegt (eher) im Verantwortungsbereich des Clients.

Code Nachricht Bedeutung
400 Bad Request Die Anfrage-Nachricht war fehlerhaft aufgebaut.
401 Unauthorized Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im „WWW-Authenticate“-Header-Feld der Antwort übermittelt.
402 Payment Required Bezahlung benötigt. Dieser Status ist für zukünftige HTTP-Protokolle reserviert.
403 Forbidden Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt, bspw. weil der authentifizierte Benutzer nicht berechtigt ist oder ein als HTTPS konfigurierter URL nur mit HTTP aufgerufen wurde.
404 Not Found Die angeforderte Ressource wurde nicht gefunden. Dieser Statuscode kann ebenfalls verwendet werden, um eine Anfrage ohne näheren Grund abzuweisen. Links, die auf solche Fehlerseiten verweisen, werden auch als Tote Links bezeichnet. „404“ gilt zudem als verbreitetes Meme.
405 Method Not Allowed Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im „Allow“-Header-Feld der Antwort übermittelt.
406 Not Acceptable Die angeforderte Ressource steht nicht in der gewünschten Form zur Verfügung. Gültige „Content-Type“-Werte können in der Antwort übermittelt werden.
407 Proxy Authentication Required Analog zum Statuscode 401 ist hier zunächst eine Authentifizierung des Clients gegenüber dem verwendeten Proxy erforderlich. Wie die Authentifizierung durchgeführt werden soll, wird im „Proxy-Authenticate“-Header-Feld der Antwort übermittelt.
408 Request Timeout Innerhalb der vom Server erlaubten Zeitspanne wurde keine vollständige Anfrage des Clients empfangen.
409 Conflict Die Anfrage wurde unter falschen Annahmen gestellt. Im Falle einer PUT-Anfrage kann dies zum Beispiel auf eine zwischenzeitliche Veränderung der Ressource durch Dritte zurückgehen.
410 Gone Die angeforderte Ressource wird nicht länger bereitgestellt und wurde dauerhaft entfernt.
411 Length Required Die Anfrage kann ohne ein „Content-Length“-Header-Feld nicht bearbeitet werden.
412 Precondition Failed Eine in der Anfrage übertragene Voraussetzung, zum Beispiel in Form eines „If-Match“-Header-Felds, traf nicht zu.
413 Payload Too Large Die gestellte Anfrage war zu groß, um vom Server bearbeitet werden zu können. Ein „Retry-After“-Header-Feld in der Antwort kann den Client darauf hinweisen, dass die Anfrage eventuell zu einem späteren Zeitpunkt bearbeitet werden könnte.
414 URI Too Long[15] Die URI bzw. URL der Anfrage war zu lang. Ursache ist oft eine Endlosschleife aus Redirects.
415 Unsupported Media Type Der Inhalt der Anfrage wurde mit ungültigem oder nicht erlaubtem Medientyp übermittelt.
416 Range Not Satisfiable Der angeforderte Teil einer Ressource war ungültig oder steht auf dem Server nicht zur Verfügung.
417 Expectation Failed Verwendet im Zusammenhang mit einem „Expect“-Header-Feld. Das im „Expect“-Header-Feld geforderte Verhalten des Servers kann nicht erfüllt werden.
421 Misdirected Request Die Anfrage wurde an einen Server gesendet, der nicht in der Lage ist, eine Antwort zu senden. Eingeführt in HTTP/2.
422 Unprocessable Entity Verwendet, wenn weder die Rückgabe von Statuscode 415 noch 400 gerechtfertigt wäre, eine Verarbeitung der Anfrage jedoch zum Beispiel wegen semantischer Fehler abgelehnt wird.[7]
423 Locked Die angeforderte Ressource ist zurzeit gesperrt.[7]
424 Failed Dependency Die Anfrage konnte nicht durchgeführt werden, weil sie das Gelingen einer anderen Anfrage voraussetzt.[7]
425 Too Early Der Server bittet den Client die Anfrage erneut zu senden, da die TLS-Verbindung noch nicht vollständig hergestellt wurde.[16] Dies soll einen Replay-Angriff verhindern.
426 Upgrade Required Der Server verlangt vom Client, dass er die Anfrage mit einem anderen Protokoll wiederholt.[17] Ein Anwendungsfall ist das Umschalten auf HTTP mit Transport Layer Security.[4]
428 Precondition Required Für die Anfrage waren nicht alle Vorbedingungen erfüllt. Dieser Statuscode soll Probleme durch Race Conditions verhindern, indem eine Manipulation oder Löschen nur erfolgt, wenn der Client dies auf Basis einer aktuellen Ressource anfordert (Beispielsweise durch Mitliefern eines aktuellen ETag-Header).[18]
429 Too Many Requests Der Client hat zu viele Anfragen in einem bestimmten Zeitraum gesendet.[18]
431 Request Header Fields Too Large Die Maximallänge eines Headerfelds oder des Gesamtheaders wurde überschritten.[18]
451 Unavailable For Legal Reasons Dieser Statuscode soll darauf hinweisen, dass die angeforderte Ressource aufgrund von gesetzlichen Bestimmungen (Copyrighteinschränkungen, Zensur etc., eventuell beschränkt auf ein bestimmtes Land) nicht verfügbar ist.[19]

Er wurde im Juni 2012 von Google-Mitarbeiter Tim Bray bei der IETF eingereicht[20] und gilt seit dem 17. Dezember 2015 als angenommen.[21] Bray schlug die Nummer 451 in Anspielung auf Ray Bradburys Roman Fahrenheit 451 vor und fügte einen Dank an den Autor an.[22]

Beispiele für weitere nicht in der Hypertext Transfer Protocol (HTTP) Status Code Registry[23] aufgeführte Codes:
418 I’m a teapot Dieser Code wurde von der IETF als Aprilscherz in einem RFC veröffentlicht. Innerhalb eines scherzhaften Protokolls zum Kaffeekochen, des Hyper Text Coffee Pot Control Protocols, zeigt er an, dass fälschlicherweise eine Teekanne anstatt einer Kaffeekanne verwendet wurde.[24] Einige Server verwenden den Statuscode, um anzuzeigen, dass sie eine Anfrage nicht beantworten möchten, etwa bei automatisierten Anfragen. Durch die Verbreitung ist der Code mittlerweile nicht für andere Zwecke verwendbar.[25] In der Status Code Registry ist der Code reserviert, allerdings als „Unused“ anstatt in der scherzhaften Bedeutung.[23]
420 Policy Not Fulfilled In W3C PEP (Working Draft 21. November 1997)[26] wird dieser Code vorgeschlagen, um mitzuteilen, dass eine Bedingung nicht erfüllt wurde.
444 No Response In nginx-Logs verwendet, um anzuzeigen, dass der Server keine Informationen zum Client zurückgesendet und die Verbindung geschlossen hat.
449 The request should be retried after doing the appropriate action Genutzt in Antworten des Microsoft Exchange Servers.[27]
499 Client Closed Request Ein nicht standardisierter Statuscode, der von nginx für den Fall eingeführt wurde, dass ein Client die Verbindung schließt, während nginx die Anforderung verarbeitet.

5xx – Server-Fehler

[Bearbeiten | Quelltext bearbeiten]

Nicht klar von den so genannten Client-Fehlern abzugrenzen. Die Ursache des Scheiterns der Anfrage liegt jedoch eher im Verantwortungsbereich des Servers.

Code Nachricht Bedeutung
500 Internal Server Error Dies ist ein „Sammel-Statuscode“ für unerwartete Serverfehler.
501 Not Implemented Die Funktionalität, um die Anfrage zu bearbeiten, wird von diesem Server nicht bereitgestellt. Ursache ist zum Beispiel eine unbekannte oder nicht unterstützte HTTP-Methode.
502 Bad Gateway Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er seinerseits eine ungültige Antwort erhalten hat.
503 Service Unavailable Der Server steht temporär nicht zur Verfügung, zum Beispiel wegen Überlastung oder Wartungsarbeiten. Ein „Retry-After“-Header-Feld in der Antwort kann den Client auf einen Zeitpunkt hinweisen, zu dem die Anfrage eventuell bearbeitet werden könnte.
504 Gateway Timeout Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er innerhalb einer festgelegten Zeitspanne keine Antwort von seinerseits benutzten Servern oder Diensten erhalten hat.
505 HTTP Version not supported Die benutzte HTTP-Version (gemeint ist die Zahl vor dem Punkt) wird vom Server nicht unterstützt oder abgelehnt.
506 Variant Also Negotiates Die Inhaltsvereinbarung der Anfrage ergibt einen Zirkelbezug.[5]
507 Insufficient Storage Die Anfrage konnte nicht bearbeitet werden, weil der Speicherplatz des Servers dazu derzeit nicht mehr ausreicht.[7]
508 Loop Detected Die Operation wurde nicht ausgeführt, weil die Ausführung in eine Endlosschleife gelaufen wäre. Definiert in der Binding-Erweiterung für WebDAV gemäß RFC 5842,[11] weil durch Bindings zyklische Pfade zu WebDAV-Ressourcen entstehen können.
509 Bandwidth Limit Exceeded Die Anfrage wurde verworfen, weil sonst die verfügbare Bandbreite überschritten würde (inoffizielle Erweiterung einiger Server).
510 Not Extended Die Anfrage enthält nicht alle Informationen, welche die angefragte Server-Extension zwingend erwartet.[6]
511 Network Authentication Required Der Client muss sich zuerst authentifizieren, um Zugang zum Netzwerk zu erhalten.[18]

9xx – Proprietäre Fehler

[Bearbeiten | Quelltext bearbeiten]

Manche Softwarehersteller verwenden den Bereich ab 900 für proprietäre Statuscodes.[28] Dieser Zahlenbereich wurde in den RFC-Dokumenten nie erwähnt und liegt offensichtlich jenseits der standardisierten Codes. Dadurch ist er leicht als Sonderfall erkennbar.

  • Hypertext Transfer Protocol (HTTP) Status Code Registry. IANA
  • apache-status-code-headers auf askapache.com
  • Roy Fielding, Julian Reschke: RFC: 7231 – Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. Juni 2014, Abschnitt 6: Response Status Codes. (englisch).

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ R. Fielding, M. Nottingham, J. Reschke: RFC: 9110 – HTTP Semantics. Juni 2022 (englisch).
  2. 1 2 RFC: 2616 – HTTP 1.1. 1999 (englisch).
  3. 1 2 RFC: 2518 – HTTP Extensions for Distributed Authoring – WEBDAV. Februar 1999 (englisch).
  4. 1 2 RFC: 2817 – Upgrading to TLS Within HTTP/1.1. Mai 2000 (englisch).
  5. 1 2 RFC: 2295 – Transparent Content Negotiation in HTTP. März 1998 (englisch).
  6. 1 2 RFC: 2774 – An HTTP Extension Framework. Februar 2000 (englisch).
  7. 1 2 3 4 5 6 RFC: 4918 – HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV). Juni 2007 (englisch).
  8. ↑ RFC: 8297 – An HTTP Status Code for Indicating Hints. Dezember 2017 (englisch).
  9. ↑ Roy Fielding, Julian Reschke: RFC: 7231 – Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. Juni 2014, Abschnitt 6.3.4: 203 Non-Authoritative Information. (englisch).
  10. ↑ Roy Fielding, Julian Reschke: RFC: 7230 – Message Syntax and Routing. Juni 2014, Abschnitt 5.7.2: Transformations. (englisch).
  11. 1 2 RFC: 5842 – Binding Extensions to Web Distributed Authoring and Versioning (WebDAV). April 2010 (englisch).
  12. ↑ RFC: 3229 – Delta encoding in HTTP. Januar 2002 (englisch).
  13. ↑ RFC: 1945 – Hypertext Transfer Protocol – HTTP/1.0. Mai 1996 (englisch).
  14. ↑ Julian Reschke: RFC: 7538 – The Hypertext Transfer Protocol Status Code 308 (Permanent Redirect). April 2015 (englisch).
  15. ↑ iana.org
  16. ↑ RFC: 8470 – Using Early Data in HTTP. September 2018 (englisch).
  17. ↑ Roy Fielding, Julian Reschke: RFC: 7231 – Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. Juni 2014, Abschnitt 6.5.15: 426 Upgrade Required. (englisch).
  18. 1 2 3 4 RFC: 6585 – Additional HTTP Status Codes. (englisch).
  19. ↑ A New HTTP Status Code for Legally-restricted Resources
  20. ↑ tools.ietf.org
  21. ↑ datatracker.ietf.org
  22. ↑ Appendix A
  23. 1 2 iana.org
  24. ↑ RFC: 2324 – Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0). 1. April 1998 (englisch).
  25. ↑ R. Fielding, M. Nottingham, J. Reschke: RFC: 9110 – HTTP Semantics. Juni 2022, Abschnitt 15.5.19: 418 (Unused). (englisch).
  26. ↑ w3.org W3C PEP (Working Draft 21. November 1997)
  27. ↑ Microsoft Open Specifications Support Team Blog. MSDN. Abgerufen am 2. Mrz. 2016
  28. ↑ Beispielsweise liefert Linkedin bei Zugriff via curl den Code 999: curl -kI https://www.linkedin.com/company/linkedin/ (vgl. Stackoverflow)