2010-07-21 5 views
19

Возможно ли установить заголовок длины содержимого, а также использовать кодирование с кодировкой передачи? и делает ли это решение проблемы отсутствия знания ответа на стороне клиента при использовании chunked?Заголовок с кодировкой и заголовком содержимого

сценарий, о котором я думаю, это когда у вас есть большой файл для передачи, и нет никаких проблем при определении его размера, но он слишком велик, чтобы полностью буферизировать. (Если вы не используете chunked, тогда весь ответ должен получить буферизацию в первую очередь?)

спасибо.

+3

Если бы вы могли упомянуть любые ссылки RFC или что-то в этом роде, было бы здорово. – p00ya00

ответ

22

1) Нет: «Сообщения НЕ ДОЛЖНЫ включать как поле заголовка Content-Length, так и кодирование передачи без идентификации. Если сообщение содержит непередаваемое кодирование передачи, Content-Length ДОЛЖЕН быть проигнорировано. " (RFC 2616, Section 4.4)

2) И нет, вы можете использовать Content-Length и stream; протокол не ограничивает работу вашей реализации.

+0

Надеюсь, что кодирование передачи с каналом является примером для потока; вы упомянули здесь, не так ли? он также может включать запросы диапазона. я прав? –

7

Ну, вы всегда можете отправить заголовок, указав размер файла. Что-то вроде response.addHeader("File-Size","size of the file");
И игнорировать заголовок Content-Length.

Реализация клиента должна быть изменена, чтобы прочитать это значение, но эй, вы можете добиться того, что вы хотите :)

+0

Простые решения являются лучшими :-) – EZDsIt

+1

Соглашение заключается в использовании префикса 'X-' для любого нестандартного заголовка. Прокси-сервер HTTP может решить отказаться от нестандартного заголовка, отличного от X. – MSalters

+0

Спасибо MSalters, просто получили ссылку на аналогичные рекомендации в другом месте, оцените его. – Gyan

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