0

このサイトで使用されている http プロトコルを確認していますhttp://www.dlf.in/ Chrome 開発者ツールは、下の画像のように http/1.1 であることを示しています。

ただし、 http/1.1 が使用できないことを示しているように見えるため、コマンド ライン ツールは Python の -http2または alpn です。また、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

そのサイトには HTTPS がありません。ブラウザーは、理論上は HTTP での使用を許可しているにもかかわらず、HTTPS での HTTP/2 のみをサポートしています。

于 2016-10-04T18:22:41.347 に答える
0

このサイトは SSL をサポートしていません (使用してみcurl https://www.dlf.inましたが、HTTP 504 応答が返されました)。

Curlはコマンド ライン ブラウザーであり、クリア (非 SSL) で HTTP/2 も実装し、アップグレードメカニズム (--http2フラグを使用) を備えています。そのフラグを使用して、Web サイトがクリア HTTP/2 をサポートしていないことがわかりました。(を使用して、アップグレード メカニズムなしで HTTP/2 にクリアで直接接続するオプションがありますが、--http2-prior-knowledgeどちらも機能しません)。

于 2016-12-25T05:27:35.953 に答える