Как узнать, обслуживается ли мой сайт через HTTP или HTTP/2?

Есть ли команда или служба, которая сообщит мне, обслуживаются ли мои сайты по HTTP или HTTP/2.

Я нашел этот инструмент: HTTP/2 Test | Простой инструмент тестирования HTTP/2.0, но он только сообщает мне, поддерживает ли мой веб-сайт HTTP/2, но не использует ли он уже HTTP/2.

Это также расширение Chrome: HTTP/2 и индикатор SPDY, которое говорит мне, что HTTP/2 уже включен на моем сайте, но, насколько я знаю, моя версия Apache даже не поддерживает его.

Есть ли способ узнать наверняка? Спасибо!

Ответ 1

Apache не должен его поддерживать. Расширение Chrome читает заголовки HTTP, чтобы определить это.

Другой метод - просто посмотреть вкладку сети> заголовки> заголовки ответов> источник просмотра в Chrome или Firefox. Там можно увидеть заголовки. Он должен читать "HTTP/2" или какой-то вид, который я не могу вспомнить прямо сейчас.

Самый простой: вы можете использовать curl -I <your site> который поместит HTTP-ответ в первую строку.

HTTP/2.0 200
server:nginx
date:Fri, 29 Apr 2016 14:31:40 GMT
content-type:text/html; charset=utf-8
content-length:7629
last-modified:Thu, 07 Apr 2016 02:41:08 GMT
....

Ответ 2

Вы также можете попробовать --http2 или --http2-prior-knowledge. Это заставит webiste использовать HTTP/2.0:

Из руководства по скручиванию:

--http2-prior-knowledge
              (HTTP) Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1 Upgrade.  It  requires
              prior  knowledge  that  the server supports HTTP/2 straight away. HTTPS requests will still do HTTP/2 the
              standard way with negotiated protocol version in the TLS handshake.

              --http2-prior-knowledge requires that the underlying libcurl was built to  support  HTTP/2.  This  option
              overrides --http1.1 and -0, --http1.0 and --http2. Added in 7.49.0.

--http2
              (HTTP) Tells curl to use HTTP version 2.

              See also --no-alpn. --http2 requires that the underlying libcurl was built to support HTTP/2. This option
              overrides --http1.1 and -0, --http1.0 and --http2-prior-knowledge. Added in 7.33.0.

Ответ 3

Для людей, использующих Nginx, вы можете просмотреть журнал доступа, который обычно находится в /var/log/nginx/access.log и искать строки, такие как

167.220.232.9 - - [12/Feb/2018:15:09:04 +0800] "GET / HTTP/2.0" 200 2546 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"

Ответ 4

Вот еще один способ, который может быть проще, если у вас нет готового доступа к командной строке и cURL, или вы перемещаетесь по нескольким слоям CDN (например, если ваш HTTP/2 предоставляется провайдером, таким как CloudFlare).

  1. Открыть Chrome Dev Tools (Ctrl-Shift-I)
  2. Откройте вкладку Сеть
  3. Если ваша страница уже загружена, вам может потребоваться обновить (Ctrl-R)
  4. Щелкните правой кнопкой мыши строку заголовка списка запросов (строка, помеченная как: Имя, Метод, Статус и т.д.)
  5. Выберите протокол из контекстного меню.
  6. Вам может понадобиться обновить (Ctrl-R), и вы увидите все используемые протоколы.

Chrome Dev Tools Screenshot.

Если вы видите h2, то поздравляем! Ваш сайт обслуживается по протоколу HTTP/2.