0

我正在检查该站点使用的 http 协议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())

dlf.in 的 chrome 开发工具的网络选项卡

4

3 回答 3

0

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

Curl是一个命令行浏览器,它也以明文(非 SSL)实现 HTTP/2,并且它具有升级机制(使用--http2标志)。使用该标志,我看到该网站不支持明确的 HTTP/2。(有一个选项可以直接与 HTTP/2 明文连接,无需升级机制,使用--http2-prior-knowledge,但它也不起作用)。

于 2016-12-25T05:27:35.953 回答
0

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

于 2016-10-04T18:22:41.347 回答
0

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

HTTP/1.1 200 正常

我用 2.0 试了一下,得到:

HTTP/1.1 505 HTTP 版本不支持

于 2016-10-04T18:31:26.323 回答