【问题标题】:Writing a GET request to return HTTP 1.1 instead of 1.0编写 GET 请求以返回 HTTP 1.1 而不是 1.0
【发布时间】:2021-12-13 06:22:56
【问题描述】:

我正在用 python 编写一个 tcp web 客户端和 web 服务器(我是 python 和套接字/网络的新手)。一切正常,但我想实现 HTTP/1.1 协议而不是 HTTP/1.0,无论我做什么我都无法得到 1.1 的响应。我读到它需要一个主机字段,但也许我做错了什么。

这是我的 GET 请求

request = "GET " + path + " HTTP/1.1" + "\r\nHost: " + HOST + "\r\n\r\n"

这是我的回答

"b'HTTP/1.0 200 OK

我正在为我的 Web 服务器使用 BaseHTTPRequestHandler。可能是这个问题吗?

【问题讨论】:

    标签: python sockets server client


    【解决方案1】:

    您应该在BaseHTTPRequestHandler 实现中将protocol_version 设置为'HTTP/1.1'

    protocol_version 这指定了响应中使用的 HTTP 协议版本。如果设置为'HTTP/1.1',服务器将允许HTTP持久连接;但是,您的服务器必须在其对客户端的所有响应中包含准确的Content-Length 标头(使用send_header())。为了向后兼容,该设置默认为'HTTP/1.0'

    【讨论】:

      【解决方案2】:

      尝试:request = f"GET / HTTP/1.1\r\nHost: {HOST}:{PORT}\r\n\r\n".encode()

      在 {HOST} 中插入主机,在 {PORT} 中插入端口。

      【讨论】:

        猜你喜欢
        • 2020-11-12
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 2021-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多