LINUX.ORG.RU

apache 1.x/chunked transfer encoding


0

0


сижу рассматриваю HTTP ответ одного популярного ресурса (www.ru) и несколько недоумеваю. а именно: каким образом он разбит на чанки. по крайней мере мне всегда казалось [по наивности], что фактическое разбиение ответа на чанки обычно является следствием внутреннего устройства генератора HTML. к примеру, если часть страницы генерируется CGI скриптом, то его вывод будет оформлен в виде отдельного чанка и так далее.

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

--- cut ---
<tr>^
<td align="center" valign="middle" colspan="3"><br>^
<!-- virtual ("/cgi-www/re_main.scr"); -->^
^
<s^
192^
cript language='JavaScript' type='text/javascript'>^
<!--^
if (!document.phpAds_used) document.phpAds_used = ',';^
document.write ("<" + "script language='JavaScript' type='text/javascript' src='");^
document.write ("http://slops.dol.ru/adjs.php?n=a427682e";);^
document.write ("&amp;clientid=4&amp;target=_self");^
document.write ("&amp;exclude=" + document.phpAds_used);^
document.wr^
ede^
ite ("'><" + "/script>");^
//-->^
--- cut ---

как видно, здесь врезано два чанка причём каждый из них - 192 и ede - врезаются фактически "по живому", те никакой генератор по-идее в трезвом уме не станет так своеобразно бить свой вывод.

вопрос - откуда берётся такое разбиение и что они значит :-?

// wbr


ATM пожалуй единственное объяснение, которое приходит мне в голову - это сборка ответов, реально отдаваемых клиенту, на frontend прокси с которым он реально общается из кусочков, которые отвечает реальный backend генератор через fastcgi/http. в этом случае, проксирующий сервер ничего не знает о структуре документа и дописывает отправляемые чанки по мере чтения блоков данных из соединения с генератором, которые естественно не обязаны строго биться на логические чанки.

// wbr

klalafuda ★☆☆
() автор топика
Ответ на: комментарий от klalafuda

Сам пошутил -- сам посмеялся.

Алсо, прозреваю рекламу ресруса.

anonymous
()
Ответ на: комментарий от klalafuda

угу, если от бэкенда не пришло Content-Length то как фронтенд длину отдаст не скачивая весь ответ целиком?

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.