14.17. Content-Range
Заголовок объекта Content-Range отправляют с частичным телом объекта, чтобы определить, где в полном теле объекта частичное тело должно быть вставлено. Он также указывает полный размер полного тела объекта. Когда сервер возвращает частичный ответ клиенту, он должен описать и степень диапазона, охваченного ответом, и длину всего тела объекта.
Content-Range = "Content-Range" ":" content-range-spec content-range-spec = byte-content-range-spec byte-content-range-spec = bytes-unit SP first-byte-pos "-" last-byte-pos "/" entity-length entity-length = 1*DIGIT
В отличие от значений байта-ranges-specifier, byte-content-range-spec может только определить один диапазон, и должен содержать абсолютные позиции байта для обоих первый и последний байт диапазона.
byte-content-range-spec, значение last-byte-pos которого — меньше чем его значение first-byte-pos, или чье значение entity-length меньше чем или равно своему значению last-byte-pos, недопустим. Получатель недопустимого byte-content-range-spec ДОЛЖЕН проигнорировать его и любой контент, переданный наряду с ним.
Примеры значений byte-content-range-spec, предполагая, что объект содержит в общей сложности 1234 байта:
* The first 500 bytes: bytes 0-499/1234 * The second 500 bytes: bytes 500-999/1234 * All except for the first 500 bytes: bytes 500-1233/1234 * The last 500 bytes: bytes 734-1233/1234
Когда сообщение HTTP включает контент одного диапазона (например, ответ на запрос на один диапазон, или к запросу на ряд диапазонов, которые накладываются без любых отверстий), этот контент передан с заголовком Content-Range, и заголовком Content-Length, показывающим числу байтов, фактически переданных. Например,
HTTP/1.1 206 Partial content Date: Wed, 15 Nov 1995 06:25:24 GMT Last-modified: Wed, 15 Nov 1995 04:58:08 GMT Content-Range: bytes 21010-47021/47022 Content-Length: 26012 Content-Type: image/gif
Когда сообщение HTTP включает контент множественных диапазонов (например, ответ на запрос на множественные ненакладывающиеся диапазоны), они переданы как многослойное сообщение MIME. Многослойный контент-type MIME, используемый с этой целью, определен в этой спецификации, чтобы быть "multipart/byteranges". См. приложение 19.2 для его определения.
Клиент, который не может декодировать MIME multipart/byteranges сообщение, не должен попросить множественные диапазоны байта в отдельном запросе.
Когда клиент запрашивает множественные диапазоны байта в одном запросе, сервер ДОЛЖЕН возвратить их в порядке, что они появлялись в запросе.
Если сервер игнорирует спецификации диапазона-байта, потому что он недопустим, сервер должен обработать запрос, как будто недопустимое поле заголовка Range не существовало. (Обычно, это означает возвращение 200 ответов, содержащих полный объект). Причина состоит в том, что единственное время, клиент сделает такой недопустимый запрос, — то, когда объект меньше чем объект, найденный предшествующим запросом.