2009-04-04 14 views

Antwort

67

Range wird in der Anfrage verwendet wird, für einen bestimmten Bereich zu stellen (oder Bereiche) von Bytes. Content-Range wird in der Antwort verwendet, um anzugeben, welche Bytes der Server Ihnen gibt (die sich von dem von Ihnen angeforderten Bereich unterscheiden können) sowie wie lange der gesamte Inhalt (falls bekannt) ist.

+7

Lesen Sie btimby Antwort unten. –

+2

@BrunoMartinez Während Sie in der Anfrage den Inhaltsbereich verwenden können, war es ziemlich klar aus der Frage, dass das OP nach dem Herunterladen von Inhalten mit einem bestimmten Bereich gefragt hat. Ich antwortete auf der Grundlage der Fragen des OP und versuchte nicht, eine umfassende Beschreibung aller Fälle zu geben, in denen Content-Range verwendet werden könnte. –

+3

@BrianCampbell du bist natürlich richtig. Ich wollte nur meine Ergebnisse für die Nachwelt aufzeichnen. Ich habe meine Antwort bearbeitet, um sicherzustellen, dass sie nicht den Eindruck erweckt, dass Ihre Antwort in irgendeiner Weise falsch ist. – btimby

113

Eigentlich ist die angenommene Antwort nicht vollständig. Inhaltsbereich wird nicht nur in Antworten verwendet. Es ist auch legal in Anfragen, die eine Entität Körper bereitstellen.

Zum Beispiel stellt ein HTTP-PUT einen Entity-Body bereit, der nur einen Teil einer Entität bereitstellen kann. Daher kann die PUT-Anfrage einen Content-Range-Header enthalten, der dem Server anzeigt, wo der Teilkörper der Entität in die Entität eingefügt werden soll.

Zum Beispiel lassen Sie uns zuerst erstellen und dann in eine Datei anhängen HTTP:

Antrag 1:

PUT /file HTTP/1.1 
Host: server 
Content-Length: 1 

a 

Antrag 2:

PUT /file HTTP/1.1 
Host: server 
Content-Range: 1-2/* 
Content-Length: 1 

a 

Wie wollen wir den Inhalt der Datei sehen ...

Anfrage 3:

GET /file HTTP/1.1 
Host: server 

HTTP/1.1 200 OK 
Content-Length: 2 

aa 

Dies ermöglicht zufälligen Dateizugriff, sowohl Lesen und Schreiben über HTTP. Ich wollte nur klarstellen, dass ich die Verwendung von Content-Range in einem WebDAV-Client untersuche, den ich gerade entwickle. Vielleicht wird sich diese erweiterte Information für jemand anderen als nützlich erweisen.

+6

Content-Bereich ist in Anfragen nicht zulässig. –

+10

Dieser Kommentar ist falsch. RFC2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16) beschränkt den 'Content-Range'-Header nicht auf Anfragen, sondern bindet ihn an einen" partiellen Entity-Body " . Es ist tatsächlich sehr üblich, die Funktion zu verwenden, um den Upload-Resume- oder Chunked-Upload zu erleichtern. – Hank

+1

Marks Kommentar ist korrekt. Siehe: http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-23, Abschnitt 4.3.4. – grzes