Как проверить, есть ли на сайте поддержка протокола http/2
Есть много тем о протоколе http/2, но мне интересно, есть ли работающий сайт с этим протоколом.
т.е.
Мы можем решить использовать http://
или же https://
но как написать запрос http/2?
Я знаю, что этот протокол зависит от возможностей сервера, но не могу найти способ проверить, если какой-то веб-сайт, например, google.com
имеет http2
поддержка включена.
Как я вижу на этой картинке, все современные браузеры поддерживают этот протокол.
Я не видел ни одной ссылки, которая могла бы выглядеть как протокол нового поколения.
Мой вопрос: мы используем протокол http/2, не зная, или это просто сказка?
10 ответов
HTTP/2 повторно использует схемы http:// и https://, а не использует новые.
Все браузеры поддерживают только HTTP/2 через https://, и часть согласования SSL/TLS заключается в сообщении о том, поддерживают ли обе стороны HTTP/2 и желают ли его использовать (используя расширение SSL/TLS, называемое ALPN).
Преимущество этого заключается в том, что вы можете просто подключиться к веб-сайту и, если ваш браузер его поддерживает, он автоматически согласует HTTP/2, а если нет, автоматически вернется к HTTP/1.1.
Таким образом, чтобы проверить поддержку HTTP/2, вы можете использовать браузер, как подсказывает Маркус (обязательно добавьте столбец "Протокол" на вкладку "Сеть" в Chrome, например).
Или вы можете использовать онлайн-тестер, как https://tools.keycdn.com/http2-test
Или вы можете использовать инструмент командной строки, например openssl (при условии, что он создан с поддержкой ALPN): openssl s_client -alpn h2 -connect www.example.com:443 -status
,
Большинство крупных сайтов (например, Twitter, Facebook, Amazon, Stack Overflow) сейчас используют HTTP/2.
Вы можете просто проверить: Chrome Dev Tool > Сеть> Протокол
Он сообщит вам используемый протокол и домен каждой передачи.
h ttps://stackru.com/images/45d6e167ee6cca81087564f1ef edee5e3f9e0586.png
Вы можете использовать
curl
команда, чтобы узнать, поддерживает ли конкретный веб-сайт протокол HTTP / 2. В следующем примере просто замените
https://www.cloudflare.com/
с URL-адресом, который вы хотите проверить на поддержку HTTP / 2:
% curl -vso /dev/null --http2 https://www.cloudflare.com/
Если ты видишь
offering h2
среди выходных сообщений это означает, что данный URL поддерживает HTTP / 2. Например:
....
* ALPN, offering h2
* ALPN, offering http/1.1
....
Откройте инструменты разработчика в Chrome с помощью F12,
Затем перейдите на вкладку "Сеть".
Щелкните правой кнопкой мыши строку, выберите "Параметры заголовка", а затем выберите в меню "Протокол".
На этот вопрос уже был дан ответ, но я все же отвечу на него.
Перейти к Chrome
Developer Tools
. Вы можете открыть инструменты разработчика разными способами, например:
- Я работаю на Mac, поэтому использую комбинацию ⌥⌘i (⌥+⌘+i), чтобы открыть инструменты разработчика в браузере Chrome. Он выбирает
Network
tab по умолчанию, если вы используете комбинацию клавиш. - Вы можете использовать в качестве альтернативы
F12
на клавиатуре, чтобы сделать то же самое. - Вы можете открыть Инструменты разработчика, просто щелкнув три точки, также известные как многоточие, показанные в правом верхнем углу вашего браузера. Нажмите на
Three dots aka ellipsis -> More Tools -> Developer Tools
В столбце щелкните правой кнопкой мыши и убедитесь, что установлен флажок. Теперь вы можете увидеть столбец, где
h2
относится к
HTTP/2
а также
h3
относится к
HTTP/3
на случай, если вы их увидите и
http/1.1
относится к
HTTP/1.1
.
Вы можете увидеть столбец в качестве альтернативы следующим образом:
Щелкните правой кнопкой мыши строку, которую вы видите под
Name
столбец и нажмите наHeader Options
и проверитьProtocol
.Вы также можете проверить здесь бесплатно. Пример здесь: введите https://google.com или ваш сайт с протоколом HTTPS.
Существует также расширение для браузера Chrome, которое может вам помочь. Реф ссылка здесь .
Вы также можете использовать
curl
команду проверить. В этой теме есть принятый ответ на этот вопрос.Вы можете использовать эту команду, если вам нравится CLI
curl -sI --http2 https://stackoverflow.com/ | grep -i "HTTP/2"
Откройте браузер devtools и перейдите на вкладку сети. Там вы увидите h2, если http/2 доступен.
Решение с использованием команды в качестве существующего решения curl не сработало для меня.
curl
предоставляет переключатель, который обеспечивает отправку прямого запроса HTTP / 2 без попытки запроса обновления HTTP / 1.1. Примеры ниже могут помочь понять поведение в разных случаях:
Curl to Google, который поддерживает HTTP / 2 - автоматически выбирается HTTP / 2.
curl -Iks https://www.google.com/robots.txt
HTTP/2 200
accept-ranges: bytes
vary: Accept-Encoding
content-type: text/plain
content-length: 7199
cross-origin-resource-policy: cross-origin
date: Fri, 21 May 2021 13:39:02 GMT
expires: Fri, 21 May 2021 13:39:02 GMT
cache-control: private, max-age=0
Заверните на мой сервер, который не поддерживает HTTP / 2 - в ответе указывается HTTP / 1.1.
curl -Iks https://myserver/reset
HTTP/1.1 502 Bad Gateway
connection: close
content-length: 0
Подключайтесь к моему серверу с помощью
--http2
выключатель. В ответе все еще указывается HTTP / 1.1.
curl -Iks --http2 https://myserver/reset
HTTP/1.1 502 Bad Gateway
connection: close
content-length: 0
Подключайтесь к моему серверу с помощью
--http2-prior-knowledge
. Обратите внимание, что ответа не последовало.
curl -Iks --http2-prior-knowledge https://myserver/reset
Если вышеуказанное выполняется с
v
switch (подробный), вывод будет включать строку ниже.
* http2 error: Remote peer returned unexpected data while we expected SETTINGS frame. Perhaps, peer does not support HTTP/2 properly.
Примечание:
- Выключатель
k
дляinsecure
- мой сервер использует самоподписанный сертификат. В противном случае не нужно. - Выключатель
I
отправитьHEAD
просить и избегать шума на выходе. - Выше показано с помощью curl 7.58.0 в Ubuntu 18.04.
Вы можете использовать команду
curl -vso /dev/null https://google.com 2>&1 | grep ALPN
Выход будет либо
* ALPN, offering h2 // Client is offering HTTP 2 protocol
* ALPN, offering http/1.1 // Client is also offering HTTP 1.1 protocol
* ALPN, server accepted to use h2 // Server said that it is going to use HTTP 2 protocol
Или
* ALPN, offering h2 // Client is offering HTTP 2 protocol
* ALPN, offering http/1.1 // Client is also offering HTTP 1.1 protocol
* ALPN, server accepted to use http/1.1 // Server said that it's going to use HTTP 1.1 protocol, even though client supports HTTP 2.0
Вы можете видеть, что объяснения находятся прямо в цитируемом выводе после //
Вы также можете использовать классное расширение chrome/firefox под названием HTTP/2 и индикатор SPDY для проверки протокола веб-сайта.