Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 9827|Отговор: 0

HTTP протокол Transfer-Encoding (на части)

[Копирай линк]
Публикувано в 24.09.2019 г. 18:07:57 ч. | | | |
1. Предистория:

  • Постоянни проблеми с връзката: При непостоянни връзки браузърът може да определи границите на искащия или отговорния обект според това дали връзката е прекъсната; При непрекъснати връзки този подход очевидно не работи. Понякога, въпреки че съм изпратил всички данни, браузърът не знае дали ще има нови данни на отворената връзка, затова просто чака.
  • Решете с дължина на съдържанието: Изчислете дължината на обекта и кажете на другата страна през главата. Браузърът може да разбере, че обектът за отговор е над по дължината на Content-Length
  • Нов проблем с дължината на съдържанието: Тъй като полето Content-Length трябва наистина да отразява дължината на обекта, дължината е неизвестна за динамично генерирано съдържание, докато съдържанието не бъде създадено. В този момент, за да получите точна дължина, можете само да отворите достатъчно голям буфер и да изчакате цялото съдържание да бъде генерирано, преди да изчислите. Въпреки това, това изисква повече разходи за памет от една страна, а от друга страна ще накара клиента да чака по-дълго.
  • Нуждаем се от нов механизъм, който не разчита на дължината на заглавката и познава границите на обектите - Transfer-Encoding: chunked.

2. Трансферно кодиране (на части)

  • Transfer-Encoding е HTTP заглавно поле (response header), което буквално означава "трансферно кодиране". Последната HTTP спецификация дефинира само един тип кодиращ транспорт: chunked.
  • Кодирането на парчета е механизъм за трансфер на данни в протокола за хипертекстов трансфер (HTTP), който позволява HTTP данните, изпратени от уеб сървър към клиента, да бъдат разделени на няколко части. Кодирането на блоков транспорт е налично само в HTTP протокол версия 1.1 (HTTP/1.1).
  • Данните се разбиват на серия от части и се изпращат в един или повече части, така че сървърът да може да изпраща данни, без да знае предварително общия размер на изпратеното съдържание.


Специфични методи

  • След добавяне на Transfer-Encoding: chunked към заглавката, това означава, че пакетът е на части. В този случай обектите в пакета трябва да се предават в серия от чънци.
  • Всеки фрагмент съдържа стойността на шестнадесетичната дължина и данните, като стойността на дължината е изключителна за един ред, като дължината не включва CRLF в края му, нито CRLF в края на фрагментираните данни.
  • Последната стойност на дължината на частта трябва да е 0, а съответните данни за чънк нямат съдържание, което показва края на обекта.




asp.net Основен тестов код:







Предишен:Дължина на съдържанието на Http протокола
Следващ:Три фактора, които ме карат да пренебрегвам Chrome
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com