2016-05-21 2 views
1

В HTTP 1.1, строка состояния былаHTTP1.1 к HTTP/2, что о версии заголовка и других

scheme/version code reason 
HTTP/1.1 200 OK 

Я вижу: заголовки состояния в HPACK спецификации: схема и. Я не вижу ничего для версии или причины? Разве нет?

В запросе в HTTP 1.1, запрос линия

method uri scheme/version 
POST http://myhost.com HTTP/1.1 

Я вижу: метод и я вижу: путь, который я думаю, что это просто относительный путь, который не является такой же, как полный абсолютный путь (и поскольку хром и firefox нажимают https для http2, это может иметь смысл). Я не вижу заголовка версии?

Есть ли заголовок версии? или видно, что это всегда будет известно до решения протокола, так что это действительно не нужно?

Как насчет кодов причин? Предполагается, что они довольно постоянны, поэтому они уходят (я угадываю здесь).

спасибо, Дин

+0

Согласно [HTTP/2 RFC] (http://httpwg.org/specs/rfc7540.html#discover-http): «Клиент, который делает запрос на« http »URI __without knowledge__ о поддержке для HTTP/2 на следующем хосте используется механизм HTTP Upgrade ". Я предполагаю, что если клиент уже знает, что сервер поддерживает HTTP/2, он может сначала использовать версию «HTTP/2.0». Также [Листинг 9] (http://www.javaworld.com/article/2916548/java-web-development/http-2-for-java-developers.html?page=2) в этом руководстве по внедрению HTTP2 имеет версия установлена ​​на 'HTTP/2.0' –

+0

HTTP/2 всего 2, нет« 2.0 », –

ответ

2

В HTTP/1, маркер версии было необходимо дифференцировать HTTP/1.0 от HTTP/1.1, так как они имели такое же представление проволоки, но поддерживали различные функции.

Например, клиент, объявляющий HTTP/1.1, неявно сообщает серверу, что он поддерживает постоянные соединения и фрагментацию контента.

С протоколом HTTP/2 протокол согласовал.

В текстовом HTTP/2 сообщении Upgrade заголовок h2c, где 2 означает версию 2 протокола. Я предполагаю, что для HTTP/3 токен изменится на h3c. Аналогично происходит для зашифрованного HTTP/2, где токен h2 обсуждается через ALPN.

Сообщения о причине были отброшены как избыточные, так как код состояния уже передавал всю необходимую информацию (не говоря уже о том, что они могут быть атакными векторами).

По этим причинам HTTP/2 не имеет ни псевдонимов, ни версий.

Смежные вопросы