chrome开发人员工具显示的http协议不正确?

时间:2016-10-04 17:50:05

标签: python google-chrome http2 http-1.1 alpn

我正在检查此网站使用的http protcol http://www.dlf.in/ Chrome开发者工具将其显示为http / 1.1,如下图所示。

然而,python中的命令行工具is-http2或alpn似乎表明http / 1.1不可用。只有http1可用。这是怎么回事?

我在python中进行ALPN协商如下(openssl版本:OpenSSL 1.0.2h和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())

network tab of chrome develper tools for dlf.in

3 个答案:

答案 0 :(得分:0)

该网站上没有HTTPS。浏览器仅支持HTTPS上的HTTP / 2,尽管规范允许它在理论上通过HTTP。

答案 1 :(得分:0)

使用telnetHTTPie发送HTTP请求(1.0和1.1),Web服务器响应:

  

HTTP / 1.1 200确定

我用2.0试了一下,得到了:

  

不支持HTTP / 1.1 505 HTTP版本

答案 2 :(得分:0)

此网站不支持SSL(我尝试使用curl https://www.dlf.in并获得HTTP 504响应)

Curl是一个命令行浏览器,它还以clear(非SSL)方式实现HTTP / 2,并且具有upgrade机制(使用--http2标志)。使用该标志我看到该网站不支持清除HTTP / 2。 (有一个选项可以使用--http2-prior-knowledge在没有升级机制的情况下直接与HTTP / 2连接,但它也不起作用。)