510 Not Extended
Verwendung
Der Statuscode 510 Not Extended ist Teil des HTTP Extension Framework. Die IANA führt 510 mittlerweile als „Not Extended (OBSOLETED)“, und die Spezifikation wurde in den Status Historic überführt, das heißt, das Protokoll wird für den Einsatz nicht mehr empfohlen.
Der Fehler tritt auf, wenn vom Client eine erweiterte HTTP-Anfrage verlangt wird, er diese aber nicht gesendet hat. Die Serverantwort enthält Informationen dazu, wie die Anfrage zu erweitern ist, auch wenn das genaue Format im Protokoll nicht festgelegt ist.
SEO-Auswirkung
Suchmaschinen behandeln 510 wie andere 5xx-Serverfehler. Anhaltende Fehler verringern die Crawl-Rate und entfernen betroffene URLs schließlich aus dem Index.
Beispiel
Der Client sendet eine Anfrage, die eine verbindliche HTTP-Erweiterung erfordert. Der Server antwortet mit 510 Not Extended, weil die Anfrage weder das erforderliche M—Präfix noch die Erweiterungsdeklaration enthält.
Anfrage
GET /resource HTTP/1.1
Host: example.com
Antwort
HTTP/1.1 510 Not Extended
Content-Type: text/html; charset=UTF-8
Content-Length: 199
<html>
<head>
<title>Not Extended</title>
</head>
<body>
<p>The request requires a mandatory HTTP
extension. Resubmit with the required
extension headers.</p>
</body>
</html>
Behebung
Der Server verlangt eine HTTP-Erweiterung, die der Client nicht in die Anfrage aufgenommen hat. Der Body der 510-Antwort beschreibt, welche Erweiterung benötigt wird.
Auf Client-Seite:
Auf Server-Seite:
Dieser Statuscode begegnet einem in der Praxis nur selten. Das HTTP Extension Framework wurde in den Status Historic überführt und hat nahezu keine Verbreitung gefunden. Die meisten modernen APIs und Webanwendungen regeln die Aushandlung von Funktionen über eigene Header, Query-Parameter oder API-Versionierung statt über den Mechanismus des Extension Framework.
510 in Service Workern
Service Worker, die Fetch-Anfragen abfangen, lassen mitunter ein 510 durchscheinen, wenn dem Worker die Erweiterung oder Fähigkeit fehlt, die der Origin verlangt. Die Behebung ist dieselbe: Prüfen Sie den Antwort-Body auf die fehlende Erweiterung und aktualisieren Sie den Fetch-Handler des Service Workers so, dass er die erforderlichen Header mitsendet.
Code-Referenzen
.NET
HttpStatusCode.NotExtended
Rust
http::StatusCode::NOT_EXTENDED
Rails
:not_extended
Go
http.StatusNotExtended
Symfony
Response::HTTP_NOT_EXTENDED
Python3.5+
http.HTTPStatus.NOT_EXTENDED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NOT_EXTENDED
Angular
@angular/common/http/HttpStatusCode.NotExtended