Для HTTP / 0.9:
GET /
Для HTTP / 1.0:
GET / HTTP/1.0
Для HTTP / 1.1:
GET / HTTP/1.1
Host: example.com
Какова строка запроса для HTTP / 2? Это что-то вроде:
GET / HTTP/2.0
или HTTP / 2?
Ни то, ни другое; такой строки запроса нет, потому что HTTP / 2 ( RFC 7540 ) использует для связи не строки, а кадры ( раздел 4 ). Внутри этих кадров обмен заголовками осуществляется с использованием полей заголовка HTTP ( раздел 8.1.2 ).
Клиент должен сначала узнать, поддерживает ли сервер HTTP / 2.
Для HTTP ( раздел 3.2 ) это делается с помощью Обновление: h2c
заголовков:
> GET / HTTP / 1.1
> Хост: сервер. example.com
> Соединение: Обновление, Настройки HTTP2
> Обновление: h2c
> Настройки HTTP2: <кодировка base64url полезной нагрузки HTTP / 2 НАСТРОЙКИ>
>
Для HTTPS ( раздел 3.3 ) используется h2
идентификатор протокола в TLS-ALPN ( RFC 7301 ).
Немедленно начать с HTTP / 2 предисловия к соединению , поскольку предварительное знание ( раздел 3.4 ).
Теперь предисловие к клиентскому соединению HTTP / 2 ( раздел 3.5 ) может быть тем эквивалентом, который вы ищете, поскольку обмен данными всегда начинается с последовательности из 24 октетов:
0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
т.е. PRI * m HTTP / 2.0 \ r \ n \ r \ nSM \ r \ n \ r \ n
После этого поля заголовка обмениваются во фреймах с использованием сжатия заголовка ( раздел 4.3 ):
Списки заголовков - это наборы из нуля или более полей заголовков.Когда передается через соединение, список заголовков сериализуется в блок заголовков с использованием сжатия заголовка HTTP [ СЖАТИЕ ]. Затем сериализованный блок заголовка делится на одну или несколько последовательностей октетов , называемых фрагментами блока заголовка, и передается в полезной нагрузке
HEADERS
( Раздел 6.2 ),PUSH_PROMISE
( Раздел 6.6 ) илиПРОДОЛЖЕНИЕ
( Раздел 6.10 ) кадры .
Эквиваленты HTTP / 2 для нескольких запросов и ответов HTTP / 1.1 проиллюстрированы в примерах в разделе 8.1.3 , например
GET / resource HTTP / 1.1 HEADERS Host: example.org ==> + END_STREAM Accept: image / jpeg + END_HEADERS : method = GET {{1} }: scheme = https : path = / resource host = example.org accept = image / jpeg