RFC: 2068
Оригинал: Hypertext Transfer Protocol - HTTP/1.1
Другие версии: RFC 2616
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Алексей Симонов

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 ответов, содержащих полный объект). Причина состоит в том, что единственное время, клиент сделает такой недопустимый запрос, — то, когда объект меньше чем объект, найденный предшествующим запросом.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.