Nano Hash - криптовалюты, майнинг, программирование

HTTP/1.0 все еще используется?

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

Редактировать: меня меньше заботит полезность/важность HTTP/1.0, а количество программного обеспечения, которое на самом деле использует его не для внутренних нужд (модульное тестирование — это внутреннее использование). , например) целей в реальном мире (браузеры, роботы, смартфоны/тупые телефоны и т.д...).



Ответы:


1

По состоянию на 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 от роботов. Поэтому я попытался удалить записи, которые явно были из таких (например, агент, включая слово робот, бот, хлюпать и т.

Таким образом, похоже, что количество конечных пользователей, все еще привязанных к 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
16.10.2016
  • Клиенты HTTP/2, совместимые с RFC, не будут отправлять этот запрос вслепую. Браузеры и curl по умолчанию используют HTTP/2 только тогда, когда сервер объявляет h2 alpn по TLS, а curl --http2 без TLS использует метод обновления, указанный в RFC. Эти 0,007%, вероятно, являются клиентами nghttp. 02.09.2019
  • В 2019 г. быстрый лог-грэп выявил проксирование nginx (забыл конфиг proxy_http_version), Mail.RU_Bot/2.0, Nimbostratus-Bot/v1.3.2 и одну попытку взлома с использованием HTTP/1.0. Все соответствующие роботы перешли на HTTP/1.1 или даже HTTP/2.0. Другими словами, теперь кажется совершенно безопасным отказаться от поддержки HTTP/1.0. 02.09.2019

  • 2

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

    15.01.2010
  • Кстати, curl по умолчанию использует HTTP 1.1. См. curl.haxx.se/docs/manpage.html. 14.01.2015
  • Я использую GNU Wget 1.19.2, и, кажется, по умолчанию используется HTTP 1.1. Википедия сообщает, что HTTP 1.1 был добавлен в версию 1.13. 08.03.2018

  • 3

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

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

    17.01.2010

    4

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

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

    (Поскольку выполнение запроса 1.0 не требует предоставления каких-либо дополнительных заголовков).

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

  • 5

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

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

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

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

    15.01.2010
  • множество мобильных браузеров и приложений, множество прокси-серверов....... каких в частности? и каково их значение (количество пользователей) 09.03.2013

  • 6

    Изучаю это сам для других целей:

    «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 Так что лучше не создавайте такой клиент ;-)

    12.11.2010

    7

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

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

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

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

    C.

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

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..