如何将Bottle框架HTTPResponse的HTTP版本从1.0改为1.1?
问题:Bottle框架返回HTTP/1.0响应,如何改为HTTP/1.1?
我正在使用Bottle实现Web服务器,有另一台服务器会发送POST请求,期望收到HTTP/1.1版本的响应,但通过Wireshark发现我的返回响应为HTTP/1.0。以下是我处理POST请求的代码片段:
myr = HTTPResponse() myr.status = 200 myr.body = dict(health) myr.content_type = "application/json" myr.add_header("protocol_version", "HTTP/1.1") x = myr.headers.allitems() return myr # HTTPResponse(status=201, body=dict(health))
我尝试使用add_header方法添加协议版本头,但并未生效,返回的仍是HTTP/1.0。我猜测这可能与BaseResponse类有关,请问是否有办法将HTTP版本从1.0改为1.1?
解决方案
- 你通过
add_header添加protocol_version自定义头的方式无效,因为HTTP协议版本属于响应起始行的内容,并非HTTP头字段,所以这个设置不会改变实际的响应协议版本。 - 直接修改
HTTPResponse对象的protocol属性即可指定响应的HTTP版本,调整后的代码如下:
myr = HTTPResponse() myr.status = 200 myr.body = dict(health) myr.content_type = "application/json" myr.protocol = "HTTP/1.1" # 直接设置响应的HTTP协议版本 return myr
- 补充说明:Bottle默认会匹配客户端请求的HTTP版本返回对应响应,如果对方服务器发送的是HTTP/1.1请求,正常情况下框架会自动返回HTTP/1.1响应。若对方发送的是HTTP/1.0请求,强制返回1.1可能存在兼容性风险,但如果需求明确要求固定返回1.1版本,上述设置即可满足要求。
内容的提问来源于stack exchange,提问作者tguclu
相关产品推荐
相关产品推荐

