Как проверить, есть ли на сайте поддержка протокола 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. Он выбирает Networktab по умолчанию, если вы используете комбинацию клавиш.
  • Вы можете использовать в качестве альтернативы 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 для проверки протокола веб-сайта.

      curl -I --http2 -s https://domain.url/ | grep HTTP
Другие вопросы по тегам