HTTP/2 достиг статуса официального стандарта.
Вам вряд ли повезет определить, поддерживают ли веб-сайты HTTP/2, используя механизм обновления открытым текстом.
Причина в том, что браузеры не поддерживают этот стиль обновления до HTTP/2 (все они предпочитают использовать ALPN, а не TLS), и, следовательно, ни один из серверов не поддерживает.
[Отказ от ответственности, я коммиттер Jetty и разработчик Jetty HTTP/2]. Например, Jetty поддерживает этот стиль обновления (и даже прямой HTTP/2), см., например, эти тесты, но мы не развертываем их на нашем собственном веб-сайте, https://webtide.com по указанным выше причинам.
Вам не нужно что-то отправлять в этом кадре SETTINGS обновления, вы хотите отправить его только в том случае, если хотите настроить сервер, прежде чем он получит возможность ответить вам HTTP/2, но обычно значения по умолчанию в порядке.
Помните, что в рамках предисловия к соединению клиент должен отправить другой фрейм SETTINGS, который также может быть пустым или содержать параметры конфигурации. Обычно клиентские API HTTP/2, такие как Jetty HTTP2Client позволит вам легко настроить фрейм SETTINGS, который является частью предисловия, потому что он будет использоваться как в механизме обновления, так и Механизм АЛПН.
Минимальное допустимое значение для заголовка HTTP2-Settings
— это пустая строка:
GET / HTTP/1.1
Host: host
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings:
User-Agent: whatever
В противном случае вам необходимо создать полезную нагрузку кадра SETTINGS (только байты, определенные здесь , и, следовательно, без заголовка кадра из 9 октетов, определенного здесь), а затем преобразовать эти байты с помощью base64, как указано здесь.
Для целей ваших тестов подойдет пустой заголовок HTTP2-Settings
, но, как я уже сказал, вы наверняка не определите, поддерживает ли веб-сайт HTTP/2: ваше обновление не удастся, но веб-сайт вполне может поддержка HTTP/2 через TLS через ALPN.
person
sbordet
schedule
22.05.2015