Statuscode 206 Partial Content

Was bedeutet der Statuscode 206 Partial Content?

Der Erfolgsstatusantwortcode HTTP 206 Partial Content gibt an, dass die Anforderung erfolgreich war und der Body die angeforderten Datenbereiche enthält, wie im Bereich Header der Anforderung beschrieben. Wenn es nur einen Bereich gibt, wird der Inhaltstyp der gesamten Antwort auf den Typ des Dokuments festgelegt und ein Inhaltsbereich(Content-Range) wird bereitgestellt. Wenn mehrere Bereiche zurückgesendet werden, wird der Content-Type auf multipart / byteranges gesetzt. Jedes Fragment deckt einen Bereich ab, wobei Content-Range und Content-Type den Bereich beschreiben.

Statuscode 206 – Optionen für Client und Server

Ein Server muss keine mehrteilige Antwort auf eine Anfrage für einen einzelnen Bereich generieren, da ein Client, der nicht mehrere Teile anfordert, möglicherweise keine mehrteiligen Antworten unterstützt. Jedoch kann ein Server eine multipart / byteranges-Nutzlast mit nur einem Body erzeugen, wenn mehrere Bereiche angefordert wurden, aber nur ein Bereich als erfüllbar befunden wurde oder nach dem Zusammenfügen nur ein Bereich übrig blieb. Ein Client, der eine multipart / byteranges-Antwort nicht verarbeiten kann, darf keine Anforderung generieren, die nach mehreren Bereichen fragt.

Wenn via 206 Partial Content eine mehrteilige Antwortnutzlast erzeugt wird, sollte der Server die Teile in der gleichen Reihenfolge senden, in der die entsprechende Bytebereichsspezifikation in dem empfangenen Range Header-Feld notiert war. Dies gilt mit Ausnahme derjenigen Bereiche, die als unerfüllbar bewertet oder in andere Bereiche zusammengefasst wurden. Ein Client, der eine mehrteilige Antwort erhält, muss das Content-Range Header-Feld prüfen, das in jedem Body vorhanden ist. So kann dieser bestimmen, welcher Bereich in diesem Body enthalten ist; Ein Client kann sich nicht darauf verlassen, dass er die angeforderten Bereiche oder die angeforderte Reihenfolge erhält.

Server sendet 206 Partial Content

Der HTTP-Statuscode 206 Partial Content bedeutet, dass der Server die partielle GET-Anforderung für die Ressource erfüllt hat. Die Anfrage muss ein Range Header-Feld enthalten, das den gewünschten Bereich angibt, und kann ein If-Range Header-Feld enthalten, um die Anfrage bedingt zu machen.

Die Antwort muss die folgenden Header-Felder enthalten:

  • Entweder ein Content-Range Header-Feld das den Bereich anzeigt, der in dieser Antwort enthalten ist, oder einen Multipart / Byteranges Inhaltstyp einschließlich Inhaltsbereich-Felder für jeden Teil. Wenn ein Content-Length Header-Feld in der Antwort vorhanden ist muss der Wert mit der tatsächlichen Anzahl der OCTETs übereinstimmen, die im Message-Body enthalten sind.
  • Date(Datum)
  • ETag und / oder Content-Location, wenn der Header auf die gleiche Anfrage in einer 200 Antwort gesendet werden würde
  • Expires(Läuft ab), Cache-Control und / oder Vary(Variieren), wenn der Feldwert
    sich von den Werten unterscheiden könnte, die in früheren Antworten für die gleiche Variante gesendet wurden

Wenn 206 Partial Content das Ergebnis einer If-Range-Anforderung ist, die einen starken Cache-Validator verwendet sollte die Antwort keine weiteren Entity-Header enthalten. Wenn die Antwort das Ergebnis einer If-Range-Anforderung ist, die einen schwachen Validator verwendet hat, darf die Antwort keine anderen Entity-Header enthalten. Dies verhindert Inkonsistenzen zwischen zwischengespeicherten Entity-Bodies und aktualisierten Headern. Andernfalls muss die Antwort alle Entity Header enthalten, die mit einer 200 (OK) -Antwort auf dieselbe Anfrage zurückgegeben worden wären.

206 Partial Content Schritt für Schritt

Angenommen, jemand möchte eine sehr große Datei von einem Dienst anfordern, aber vorher möchte er herausfinden, wie groß sie ist und ob der Dienst “Bereichsanforderungen” unterstützt. Dazu führt man eine HEAD – Anfrage an das große Dokument, das man abrufen möchte aus. Die HEAD-Methode ist eine Standard-HTTP-Methode, die so funktioniert, als hätte man eine GET-Anfrage gesendet, aber sie gibt nur die Header und nicht den Hauptteil zurück. Dadurch kann man einige Informationen über die Ressource herausfinden, ohne viel Zeit und Bandbreite dafür zu opfern. Zum Beispiel kann man den Content-Length-Header lesen und die Größe der Ressource bestimmen um anschließend eine 206 Partial ContentAntwort anzufordern.

Ein weiterer wichtiger Header ist der Accept-Ranges-Header. Wenn er vorhanden ist, kann er einen Wert von “Bytes” enthalten. Falls dem so ist, weiß ein Client, dass er eine GET-Anfrage machen kann und einen Bytebereich anfordern kann, um nur diese Bytes mit einem 206 Partial Contentabzurufen. Wenn man einen Dienst erstellt, der Bytebereichsanforderungen akzeptiert, können Clients informiert werden, indem man den Header Accept-Ranges als Antwort auf GET- und HEAD-Anforderungen bereitstellt. Damit kann man nun beispielsweise eine Bereichsanforderung an den Dienst stellen, indem man eine Standard-GET-Anfrage mit einem Range-Header sendet, der den Bereich der angeforderten Bytes wie folgt angibt: Range: bytes = 0-999. Der Dienst sollte dann mit einem 206 Partial Content, einem Content-Range Header und dem angeforderten Bereich von Bytes antworten.

Byte Ranges anfordern und senden mit 206 Partial Content

Wenn ein Client mit einem Range-Header eine Anforderung an einen Service sendet, gibt dieser 206 Partial Content mit einem Content-Range Header und dem angeforderten Bytebereich für die Ressource im Hauptteil zurück. Der Content-Length-Wert sollte die Länge dessen sein, was tatsächlich zurückgegeben wird und nicht die gesamte Länge der Ressource. Von nun an geht es darum, dass der Client weiterhin Anfragen stellt, bis er alle Bytes abgerufen hat, die er von der Ressource erhalten möchte. Wenn der Client eine Bereichsanforderung ausführt, die außerhalb der Grenzen liegt – das heißt keiner der Bereichswerte überschneidet sich mit dem Umfang der Ressource – sollte der Dienst mit dem Status 416 Requested Range Not Satisfiable antworten.

Für weitere interessante Artikel besuchen Sie unser umfangreiches SEO Handbuch!


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenlose SEO Analyse


Weitere Inhalte