2016-10-04 81 views
0

我正在检查此站点使用的http protcol http://www.dlf.in/ Chrome开发人员工具将其显示为http/1.1,如下图所示。铬开发人员工具显示的不正确的http协议?

但是命令行工具is-http2或python中的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

回答

0

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

+0

我想知道为什么铬说它支持http/1.1 –

+0

我以为你问为什么不是HTTP2。以上代码适用于HTTPS(443),因此不在本站点上(仅使用HTTP - 端口80)。它也说它是由IIS而不是Python支持的。而IIS绝对支持HTTP/1.1 - 现在所有的Web服务器现在都有一天。至于为什么你的工具不是说我不知道​​,因为你在这里给出的细节很少。目前它真的很不清楚你在问什么,好像你不知道你的系统是如何设置的! –

0

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

HTTP/1.1 200 OK

我用2.0试过,并得到:

HTTP/1.1 505不支持HTTP版本

+0

你使用的是什么确切的命令?我也不明白,为什么会发生,这就是我问的问题 –

+0

使用HTTPie:'http www.dlf.in --print Hh'将打印您的请求和响应头。 – pferate

+0

使用Telnet:'telnet www.dlf.in 80',然后输入或粘贴您的HTTP请求和标题将得到您的答复。 – pferate

0

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

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