2010-01-15 3 views
23

Скажите, что нужно написать HTTP-сервер/клиент, насколько важно поддерживать HTTP/1.0? Используется ли он везде в наши дни?Используется ли HTTP/1.0?

Edit: я меньше озабочен usefullness/значение HTTP/1.0, а суммы программного обеспечения, что на самом деле использует его для не-внутреннего (модульного тестирования является внутренним использованием, например) целей в реальный мир (браузеры, роботы, смартфоны/глупые телефоны и т. д.).

+0

JWZ написал простой 1,0-клиент- -1.1-server proxy, который может вас заинтересовать: http://www.jwz.org/hacks/http10proxy.pl – Ken

ответ

7

Я использую его все время, когда я телнет-кий к серверу для проверки соединения или выяснить, почему это не работает:

$ telnet 192.168.1.1 80 
GET/HTTP/1.0\r\n 
\r\n 

... 

(Потому что делаешь 1.0 запроса не требует, чтобы я предоставить любые дополнительные заголовки).

+10

Обратите внимание, что это не будет работать на каких-либо виртуальных хостах; и нетрудно сделать соединение HTTP 1.1, просто добавьте один заголовок «Host:», и вы все настроены. –

6

HTTP/1.0 очень важно при написании очень простых клиентов, которым не нужны накладные расходы на все 1.1 вещи, такие как конвейерная обработка и другие сложные вещи, требуемые 1.1. Опубликовать запрос получить ответ и отключить очень легко кодировать. Это может быть полезно при написании тестовых примеров для вашего сервера, которые просто хотят протестировать функциональность приложения, а НЕ - реализацию протокола HTTP.

Существует множество мобильных браузеров и приложений, которые используют 1.0, потому что у них нет места или необходимости для более сложных версий 1.1, а проблемы с задержкой с не-3G-соединениями на не-смартфонах полностью отрицают любые преимущества 1.1.

Существует также множество прокси, которые деградируют все до 1.0 независимо от того, что клиент запрашивает, а затем есть проблемы с IE.

Так что короткий ответ для HTTP-сервера общего назначения 1.0 очень важен.

+1

«много мобильных браузеров и приложений», «много прокси» ....... ** которые ** в частности? и каково их значение * (подсчет главы пользователя) – Pacerier

10

wget использует HTTP/1.0, и он по-прежнему относительно популярен (хотя он поддерживает несколько функций HTTP/1.1, таких как заголовок Host:, который необходим для доступа к любым виртуальным хостам).

+2

Как и в стороннем случае, 'curl' использует HTTP 1.1 по умолчанию. См. Http://curl.haxx.se/docs/manpage.html – mikemaccana

+0

Я использую GNU Wget 1.19.2 и, по-видимому, использует HTTP 1.1 по умолчанию. [Wikipedia] (https://en.wikipedia.org/wiki/Wget) говорит, что HTTP 1.1 был добавлен в версии 1.13. –

-2

IME его было очень долго, так как я видел истинный запрос HTTP/1.0. (включая мобильные устройства fuzzylollipop).

Я говорю об истинном запросе, поскольку MSIE все еще (претендует) на понижение до HTTP/1.0 по умолчанию (если не указано в конфигурации) при подключении через прокси (все исходящие запросы отмечены как HTTP/1.0) - однако он по-прежнему содержит HTTP/1.1 конкретные заголовки запросов и уважает все ответы HTTP/1.1.

Любопытно, что IIS, в зеркальном изображении, с радостью игнорирует версию HTTP (хотя я не много экспериментировал с этим, чтобы узнать, только делает это для пользовательских агентов MSIE).

Таким образом, с любопытным совпадением, MSIE и IIS работают лучше с прокси, чем со стандартными инструментами.

С.

+4

Это не совсем так - во-первых, по умолчанию это было изменено в 2006 году на IE7, а во-вторых, HTTP/1.0 запросы из WinINET не отправляют заголовки Accept-Encoding, и если вы все равно отправляете сжатый ответ, WinINET будет откажитесь от его распаковки. – EricLaw

9

Значительное число серверов будет намеренно возвращать HTTP/1.0 ответы, потому что некоторые (старые) браузеры позволить себе/1.0 сервер HTTP более высокий предел соединения, чем предел 2-соединения, введенного для HTTP/1.1 это постоянные связи.

Но в целом большинство реализаций «HTTP/1.0» на самом деле являются лишь немного ограниченными версиями реализаций HTTP/1.1 и многими HTTP/1.1 реализация не поддерживает некоторые функции этой версии (например, конвейерная обработка в частности).

7

Глядя на это я для других целей:

«So 1.0 появляется HTTP/1.0 используется прокси-серверами, некоторые мобильные клиенты и IE, когда настроен на использование прокси-сервера, чтобы по-прежнему приходится. не тривиальный% трафика в сети в целом. ... Да, есть еще 1.0 клиентов.

Источник (июль 2009): http://groups.google.com/group/erlang-programming/msg/08f6b72d5156ef74

:-(

Update (март 2011):

Если вы собираетесь построить штуковина клиент/сервер, сделать клиент использует HTTP/1.1 и делает сервер приемлемым как 1.1, так и 1.0. Выполнение веб-разработки - это PITA, чтобы заставить клиентов пытаться загрузить страницу без заголовка Host, потому что у меня нет способа узнать, какой сайт я предполагается загрузить: - S Итак, вам лучше не строить такого клиента ;-)

7

С 2016 года вы могли бы подумать, что протуберанство будет уменьшаться еще больше с тех пор, как в 1999 году было введено 1.1, так что это около 17 лет.

Я проверил 7,727,198 строк журналов, чтобы увидеть, какой процент я получаю от HTTP/1.0 и HTTP/1.1:

Protocol Counts  Percent 
-------------------------------- 
HTTP/0.9   0  0.00% 
HTTP/1.0 1,636,187 21.17% (all) 
HTTP/1.0  15,415  0.20% (without the obvious robots) 
HTTP/1.1 6,091,011 78.83% 
HTTP/2    0  0.00% 

Из того, что я могу видеть, большинство из HTTP/1.0 являются от роботов. Поэтому я попытался удалить записи, которые были явно из таких (например, агент, включая слова robot, bot, slurp и т. Д.)

Таким образом, количество конечных пользователей, все еще застрявших с HTTP/1.0, сегодня очень ограничено (0,2%). Однако, если вы хотите, чтобы роботы просматривали ваши веб-сайты, вам может понадобиться/хотите поддерживать работу HTTP/1.0. Большинство в любом случае будут включать заголовок Host: ..., даже если они рекламируют свое соединение как протокол HTTP/1.0.

Кроме того, различия между HTTP/1.0 и HTTP/1.1 очень размыты с точки зрения реализации. Большинство людей счастливо смешивают оба. Я бы не стал беспокоиться о том, чтобы все еще принимать/обрабатывать запросы HTTP/1.0.

На другом сервере я начинаю видеть HTTP/2.0 запросов, которые выглядят, как это (у 2427, и я вижу 34,161,268 HTTP/1.0 и HTTP/1.1 запросов, так что 0,007%):

PRI * HTTP/2.0 
Смежные вопросы