2016-10-04 79 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,但它也不起作用)。