неверный протокол http, показанный chrome developer tools?

Я проверяю http protcol в использовании для этого сайта http://www.dlf.in/
Chrome developer tools показывает, что это http / 1.1, как показано на рисунке ниже.

Однако инструмент командной строки-http2 или alpn в python, как кажется, указывает, что http/1.1 недоступен. И только http1 доступен. Что здесь происходит?

Я выполняю согласование ALPN в python следующим образом (OpenSSL версия: OpenSSL 1.0.2 h и python версия 3.5.1)

import ssl
import socket

port = 443
domain = 'www.dlf.in'

ctx = ssl.create_default_context()
ctx.set_alpn_protocols(['h2', 'spdy/3.1', 'spdy/3', 'spdy/2', 'http/1.1'])


conn = ctx.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM),
        server_hostname=domain)

conn.connect((domain, port))
print(conn.selected_alpn_protocol())

вкладка сеть инструментов chrome Developer для dlf.в

3 ответа

  1. На этом сайте нет HTTPS. Браузеры поддерживают только HTTP / 2 по HTTPS, несмотря на спецификации, позволяющие это по HTTP в теории.

  2. Использование telnetи HTTPieотправка HTTP-запросов (как 1.0, так и 1.1), веб-сервер отвечает:

    HTTP / 1.1 200 OK

    Я попробовал его с 2.0 и получил:

    HTTP / 1.1 505 версия HTTP не поддерживается

  3. Этот сайт не поддерживает SSL (я пытался использовать using curl https://www.dlf.inи получил ответ HTTP 504)

    Curl-это браузер командной строки, который также реализует HTTP/2 в clear (non SSL) и имеет механизм обновления (с помощью --http2флага). Используя этот флаг, я увидел, что веб-сайт не поддерживает clear HTTP/2. (Есть возможность подключиться непосредственно с HTTP/2 в clear, без механизма обновления, используя --http2-prior-knowledge, но он не работает).