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

14.36. Range

14.36.1. Byte Ranges

Так как все объекты HTTP представлены в сообщениях HTTP как последовательности байтов, понятие диапазона байта значимо для любого объекта HTTP. (Однако, не все клиенты и серверы должен поддержать byterange операции).

Спецификации диапазона байта в HTTP применяются к последовательности байтов в теле объекта (не обязательно то же самое как тело сообщения).

Операция диапазона байта может определить один диапазон байтов, или ряд диапазонов в пределах отдельного объекта.

ranges-specifier = byte-ranges-specifier

byte-ranges-specifier = bytes-unit "=" byte-range-set

byte-range-set  = 1#( byte-range-spec | suffix-byte-range-spec )

byte-range-spec = first-byte-pos "-" [last-byte-pos]

first-byte-pos  = 1*DIGIT

last-byte-pos   = 1*DIGIT

Значение first-byte-pos в спецификациях диапазона-байта дает байтовое смещение первого байта в диапазоне. Значение last-byte-pos дает байтовое смещение последнего байта в диапазоне; то есть, указанные позиции байта являются содержащими. Байтовые смещения начинаются в нуле.

Если значение last-byte-pos присутствует, он должен быть больше чем или равным first-byte-pos в тех спецификациях диапазона-байта, или byterange-спецификации недопустимы. Получатель недопустимых спецификаций диапазона-байта должен проигнорировать его.

Если значение last-byte-pos отсутствует, или если значение больше чем или равно текущей длине тела объекта, last-byte-pos взят, чтобы быть равным меньше текущая длина entitybody в байтах.

Его вариантом last-byte-pos клиент может ограничить число байтов, найденных, не зная размер объекта.

suffix-byte-range-spec = "-" suffix-length

suffix-length = 1*DIGIT

suffix-byte-range-spec используется, чтобы определить суффикс тела объекта, длины, данной значением suffix-length. (Таким образом, эта форма определяет последние байты N тела объекта). Если объект более короток чем указанный suffix-length, все тело объекта используется.

Примеры значений байта-ranges-specifier (предполагающий тело объекта длины 10000):

* The first 500 bytes (byte offsets 0-499, inclusive):
       bytes=0-499

* The second 500 bytes (byte offsets 500-999, inclusive):
       bytes=500-999

* The final 500 bytes (byte offsets 9500-9999, inclusive):
       bytes=-500
    Or
       bytes=9500-

* The first and last bytes only (bytes 0 and 9999):
       bytes=0-0,-1

* Several legal but not canonical specifications of the second 500 bytes (byte offsets 500-999, inclusive):
       bytes=500-600,601-999
       bytes=500-700,601-999
2007 - 2017 © Русские переводы RFC, IETF, ISOC.