使用 HTTPSConnection 时更改 http 版本

问题描述 投票:0回答:1
from http.client import HTTPSConnection

conn = HTTPSConnection("localhost", 8888)

conn.set_tunnel("www.sample.com", 443, headers={"Connection": "keep-alive"})
conn.connect()

如何修改 HTTPSConnection 以使用不同的 HTTP 版本? 默认情况下它继续使用 HTTP/1.0。

“连接 www.sample.com:443 HTTP/1.0”

“连接 www.sample.com:443 HTTP/1.1”

python python-requests connect
1个回答
0
投票

来自

http.client.HTTPConnection.set_tunnel
文档

由于 HTTP/1.1 用于 HTTP CONNECT 隧道请求,根据 RFC必须提供 HTTP Host: 标头,与作为 CONNECT 请求目的地提供的请求目标的权限形式相匹配。如果未通过 headers 参数提供 HTTP Host: 标头,则会自动生成并传输一个标头。

尽管它说它将自动生成,但您是否尝试过手动将

Host
标头添加到
set_tunnel()
方法调用中?

示例:

conn.set_tunnel("www.sample.com", 443, headers={"Connection": "keep-alive", "Host": "www.sample.com:443"})
© www.soinside.com 2019 - 2024. All rights reserved.