Какая строка запроса для HTTP / 2?

Для 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?

0
задан 13 April 2021 в 21:41
1 ответ

Ни то, ни другое; такой строки запроса нет, потому что 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 
 
4
ответ дан 24 April 2021 в 01:25

Теги

Похожие вопросы