2012-06-13 1 views
4

Общий заголовок «accept-range» - это байты. Однако для меня имеет смысл, что могут быть десятки других типов диапазонов.Могу ли я указать пользовательские типы диапазонов в заголовке «Accept-Ranges»?

Я пишу ресурс API, который принимает диапазон дат. Имеет ли смысл указывать дату в заголовке accept-range и ожидать заголовка диапазона от клиента?

ответ

4

Я изучаю тот же предмет, что и диапазоны Accept-Ranges & Диапазоны заголовков кажутся хорошими кандидатами для передачи данных подкачки.

В HTTP1.1 спецификации говорится:

диапазона единица = байт-блок | другой дальности-блок

, который предполагает, что вы можете использовать свои собственные типы юнитов, но продолжает говорить

Единственный блок диапазон, определенный HTTP/1.1 байт. Реализации HTTP/1.1 МОГУТ игнорировать диапазоны, заданные с использованием других устройств.

Несмотря на то что единственным поддерживаемым диапазоном является байт, оператор подчеркивает, что HTTP 1.1 МОЖЕТ (не должен) игнорировать диапазоны в других единицах - так, возможно, это зависит от вас?

Но заголовки HTTP содержат данные, относящиеся к телу сообщения, а не то, что представляет собой тело сообщения, поэтому только поддержка байтовых единиц имеет смысл, поскольку диапазон байтов может применяться к телу сообщения независимо от того, какой ресурс он представляет. В то время как диапазон дат представляет собой диапазон, основанный на контексте, и применим только в определенных ситуациях.

Как вы упомянули в своем вопросе способ реализовать диапазон дат будет поставлять обычай Accept-Ranges заголовка в ответ на запрос HEAD, или OPTIONS для этого URL, а затем передать Range заголовка с любые запросы GET по тому же адресу

Я думаю, что разработчик должен ли использовать его таким образом, но для меня отверстие слишком круто для этой квадратной привязки! Передайте значения в строке запроса.

Ссылка:

3.12 Range Units 

HTTP/1.1 allows a client to request that only part (a range of) the response entity be included within the response. HTTP/1.1 uses range units in the Range (section 14.35) and Content-Range (section 14.16) header fields. An entity can be broken down into subranges according to various structural units. 

     range-unit  = bytes-unit | *other-range-unit* 
     bytes-unit  = "bytes" 
     other-range-unit = token 

The only range unit defined by HTTP/1.1 is "bytes". HTTP/1.1 implementations MAY ignore ranges specified using other units. 

HTTP/1.1 has been designed to allow implementations of applications that do not depend on knowledge of ranges. 

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.12

+3

Вы действительно должны перестать смотреть на RFC 2616; мы по какой-то причине работаем над http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p5-range-21.html. –

Смежные вопросы