Ответ 1
wget
использует HTTP/1.0, и он по-прежнему относительно популярен (хотя он поддерживает несколько функций HTTP/1.1, таких как Host:
, который необходим для доступа к любым виртуальным хостам).
Скажем, нужно написать HTTP-сервер/клиент, насколько важно поддерживать HTTP/1.0? Используется ли он где-нибудь в настоящее время?
Изменить: Я меньше разбираюсь в полезности/важности HTTP/1.0, а скорее о количестве программного обеспечения, которое фактически использует его для не-внутреннего (например, для внутреннего тестирования) цели в реальном мире (браузеры, роботы, смартфоны/тупиды и т.д.).
wget
использует HTTP/1.0, и он по-прежнему относительно популярен (хотя он поддерживает несколько функций HTTP/1.1, таких как Host:
, который необходим для доступа к любым виртуальным хостам).
Справедливое количество серверов намеренно возвращает ответы HTTP/1.0, потому что некоторые (более старые) браузеры будут предоставлять сервер HTTP/1.0 более высокий лимит соединения, чем ограничение на 2 соединения, наложенное для постоянных соединений HTTP/1.1.
Но в целом большинство "HTTP/1.0" реализаций на самом деле немного ограничены версиями реализации HTTP/1.1, и многие реализации HTTP/1.1 действительно не поддерживают некоторые функции этой версии (например, конвейерная обработка).
Я использую его все время, когда я подключаюсь к серверу, чтобы проверить подключение или выяснить, почему он не работает:
$ telnet 192.168.1.1 80
GET / HTTP/1.0\r\n
\r\n
...
(потому что для создания запроса 1.0 не требуется, чтобы я предоставлял дополнительные заголовки).
Взглянув на это сам для других целей:
"HTTP/1.0 используется прокси-серверами, некоторыми мобильными клиентами и IE, когда настроен на использование прокси. Таким образом, 1.0, по-видимому, тривиальный% трафика в сети в целом. ... Да, там еще много клиентов 1.0.
Источник (июль 2009): http://groups.google.com/group/erlang-programming/msg/08f6b72d5156ef74
: - (
Обновление (март 2011):
Если вы собираетесь создать клиент/сервер, сделайте клиент использовать HTTP/1.1 и сделайте сервер приемлемым как 1.1, так и 1.0. Выполняя веб-разработку, PITA требует, чтобы клиенты пытались загрузить страницу без заголовка Host, потому что у меня нет способа узнать, какой сайт я должен загрузить: -S Поэтому вам лучше не создавать такой клиент: -)
HTTP/1.0 очень важно при написании очень простых клиентов, которым не нужны накладные расходы всех 1.1 вещей, таких как конвейерная обработка и другие сложные вещи, требуемые 1.1. Опубликовать запрос получить ответ и отключить очень легко кодировать. Это может быть полезно при написании тестовых примеров для вашего сервера, которые просто хотят протестировать функциональность приложения, а НЕ - реализацию протокола HTTP.
Существует множество мобильных браузеров и приложений, которые используют 1.0, потому что у них нет места или необходимости в более сложных реализациях 1.1, а проблемы с задержкой с не-3G-соединениями на не-смартфонах полностью отрицают любые преимущества 1.1 особенности.
Существует также множество прокси, которые деградируют все до 1.0 независимо от того, что запрашивает клиент, а затем возникают проблемы с IE.
Итак, короткий ответ: для HTTP-сервера общего назначения 1.0 очень актуальна.
По состоянию на 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
IME это было очень давно, так как я видел истинный запрос HTTP/1.0. (включая мобильные устройства fuzzylollipop).
Я говорю истинный запрос, поскольку MSIE все еще (претендует) на понижение до HTTP/1.0 по умолчанию (если yo sig в config) при подключении через прокси (все исходящие запросы отмечены как HTTP/1.0), однако он по-прежнему содержит HTTP/1.1 конкретные заголовки запросов и уважает все ответы HTTP/1.1.
Любопытно, что IIS в зеркальном изображении с радостью игнорирует версию HTTP (хотя я не слишком много экспериментировал с этим, чтобы увидеть, поддерживает ли только для пользовательских агентов MSIE).
Таким образом, с любопытным совпадением, MSIE и IIS работают гораздо лучше с прокси, чем со стандартными инструментами.
С.