14.36.2. Запросы Поиска Range
Запросы поиска HTTP, используя условные или безоговорочные методы GET могут запросить один или более поддиапазонов объекта, вместо всего объекта, используя заголовок запроса Range, который применяется к объекту, возвращенному как результат запроса:
Range = "Range" ":" ranges-specifier
Сервер МОЖЕТ проигнорировать заголовок Range. Однако, HTTP/1.1 серверы происхождения и промежуточные кэши ДОЛЖЕН поддержать диапазоны байта когда возможно, так как Range поддерживает эффективное восстановление от частично неудавшихся передач, и поддерживает эффективный частичный поиск больших объектов.
Если сервер поддерживает заголовок Range и указанный диапазон, или диапазоны соответствуют объекту:
- Присутствие заголовка Range в безоговорочном GET изменяет то, что возвращено, если GET иначе успешен. Другими словами, ответ несет код состояния 206 (Partial Content) вместо 200 (OK).
- Присутствие заголовка Range в условном GET (запрос, используя один или оба из If-Modified-Since и If-None-Match, или один или оба из If-Unmodified-Since и If-Match) изменяет то, что возвращено, если GET иначе успешен, и условие истинно. Он не затрагивает 304 (Not Modified), ответ возвратился, если условное выражение — ложь.
В некоторых случаях, он может быть более соответствующим использовать заголовок If-Range (см. раздел 14.27) в дополнение к заголовку Range.
Если прокси, который поддерживает диапазоны, получает запрос Range, перешлите запрос на прибывающий сервер, и получает весь объект в ответ, он ДОЛЖЕН только возвратить запрошенный диапазон его клиенту. Он ДОЛЖЕН хранить весь полученный ответ в его кэше, если это совместимо с его политикой выделения кэша.