You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写GET请求以返回HTTP/1.1而非HTTP/1.0的问题咨询

问题原因

你的问题确实是BaseHTTPRequestHandler的默认配置导致的,和客户端请求逻辑无关,你构造的HTTP/1.1请求已经符合规范。
BaseHTTPRequestHandler默认的响应协议版本固定为HTTP/1.0,由类属性protocol_version控制,默认值为"HTTP/1.0",不会自动适配客户端发送的请求版本。

解决方法

在你继承BaseHTTPRequestHandler的自定义处理类中,手动修改protocol_version属性即可:

from http.server import BaseHTTPRequestHandler, HTTPServer

class CustomRequestHandler(BaseHTTPRequestHandler):
    # 新增这行配置,指定响应使用HTTP/1.1协议
    protocol_version = "HTTP/1.1"
    
    def do_GET(self):
        # 原有响应逻辑需要新增Content-Length头配置
        resp_content = b"your response content"
        self.send_response(200)
        # HTTP/1.1要求必须指定Content-Length或者使用分块传输编码,否则客户端会持续等待响应结束
        self.send_header("Content-Length", str(len(resp_content)))
        self.end_headers()
        self.wfile.write(resp_content)

额外注意事项

  • 开启HTTP/1.1支持后,必须为每个响应显式设置Content-Length头,或者配置Transfer-Encoding: chunked使用分块传输,否则客户端无法判断响应传输完成的节点,会出现挂起超时的问题。
  • 你当前的客户端请求构造没有问题,已经携带了HTTP/1.1强制要求的Host字段,不需要调整客户端代码。

内容的提问来源于stack exchange,提问作者jennifer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:36:03