Мусорные байты в выводе http? - PullRequest
3 голосов
/ 31 октября 2010

Когда я использую telnet для просмотра своей сети, я получаю эти странные цифры / буквы в выводе. Это не происходит в браузере, и они определенно не в моем исходном коде. Я проверил другие сайты, и они не имеют их. Есть идеи почему? Они мусор? Как мне от них избавиться?

telnet www.mysite.com 80
GET / HTTP / 1.1
Хост www.mysite.com

Некоторые части веб-страницы в порядке, но другие выглядят так (я выделил их жирным шрифтом):

51
<ul>
<li><a href="/path/to/file
1b
">Link name</a></li>
<li><a href="/path-to-another-file
2a

РЕДАКТИРОВАТЬ: запрашивается дополнительная информация
Apache 2 и CGI (C)
Динамически генерируется

Ответы [ 2 ]

5 голосов
/ 01 ноября 2010

Сервер использует "chunked" кодировку , которая позволяет веб-серверу сохранять HTTP-соединения открытыми для повторного использования после запроса динамически генерируемой страницы (например, CGI, PHP или ASP) без буферизациився страница на конце сервера перед передачей.Он работает путем отправки небольших частей («кусков») веб-страницы за раз, каждая из которых имеет указанную длину в байтах (шестнадцатеричные числа, которые вы видите разбросанными по всей странице).Это позволяет клиенту знать, когда сервер завершил отправку данных.

В соответствии с RFC 2616 (спецификация HTTP), все клиенты HTTP / 1.1 должны иметь возможность декодировать кодированные фрагменты .Это означает, что если вы не хотите получать частичный ответ, вам потребуется запросить страницу, используя идентификатор версии HTTP / 1.0, более старой версии спецификации:

telnet www.mysite.com 80
GET / HTTP/1.0
Host: www.mysite.com 

. Сервер будетзакройте соединение после того, как оно завершит отвечать, вместо использования чанкованного кодирования и оставьте соединение открытым.

2 голосов
/ 31 октября 2010

Это HTTP Chunked Transfer Encoding . Если вы не хотите этого получать, вместо этого выполните запрос HTTP 1.0.

...