Что означает эта строка в rfc2068? - PullRequest
0 голосов
/ 13 сентября 2018

источник

Кроме того, распространение не полностью реализовано
приложения, называющие себя «HTTP / 1.0», требуют
изменение версии протокола для двух взаимодействующих приложений
определить истинные возможности друг друга.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Из RFC:

HTTP используется Глобальной информационной инициативой Всемирной паутины с 1990 года. Первая версия HTTP, называемая HTTP / 0.9, была простым протоколом.для передачи необработанных данных через Интернет.

Перефразировано:

До стандартизации HTTP существовали различия в реализациях, которые означали, что они не всегда могли правильно общаться друг с другом (например, некоторые веб-сайты).-браузеры не могли работать с определенными веб-серверами).Статья RFC ссылается на эти реализации предварительной стандартизации как использующие HTTP/0.9.

HTTP / 1.0, как определено RFC 1945, улучшил протокол, позволив сообщениям быть в формате MIME-подобногосообщения, содержащие метаинформацию о передаваемых данных и модификаторы по семантике запрос / ответ.Однако HTTP / 1.0 недостаточно учитывает эффекты иерархических прокси, кэширования, необходимости постоянных соединений и виртуальных хостов.Кроме того, распространение не полностью реализованных приложений, называющих себя «HTTP / 1.0», потребовало изменения версии протокола, чтобы два взаимодействующих приложения могли определить истинные возможности друг друга.

Перефразировано:

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

Пример

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

Таким образом, в HTTP/1.0 дни, с пользовательскими заголовками , вот как это будет воспроизводиться, если браузер запросит www.example.com, если он будет обслуживаться с общего веб-хоста:

Browser (to DNS server): "Please give me the IP address for 'www.example.com'"
DNS Server (to browser): "www.example.com is 198.51.100.7"

Browser (to 198.51.100.7): "Hello, I speak HTTP/1.0, please send me index.html for Host: www.example.com
Server (to browser): "I also speak HTTP/1.0, here is index.html for 'not-actually-example.com'" 

Как видите, браузер получил not-actually-example.com, даже если он запросил www.example.com, потому что веб-сервер использовал HTTP/1.0, который не распознает заголовок Host, хотя веб-сервербраузер отправлял заголовок Host (как расширение / экспериментальный заголовок). Программное обеспечение браузера не может определить, является ли not-actually-example.com желаемым пользователем или нет .

0 голосов
/ 13 сентября 2018

Говоря по-человечески, многие говорят, что они сделали HTTP 1.0, а они нет, что никто не знал, действительно ли это был HTTP 1.0, когда кто-то это сказал.

Чтобы выйти из этого, они выбрали новый номер.

...