【问题标题】:Restrict request to only ask for HTTP/1.0 [to prevent chunking error]限制请求只请求 HTTP/1.0 [防止分块错误]
【发布时间】:2016-10-15 10:57:27
【问题描述】:
我使用 Python 中的 Request 包从服务器收到错误 requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))。
我从 How to tell the HTTP server to not send chunked encoding 帖子中了解到,解决此问题的一种方法是告诉服务器不要发送分块编码,特别是通过在请求中指定 HTTP/1.0。
如何使用 Requests 包执行此操作?
【问题讨论】:
标签:
python
python-requests
【解决方案1】:
您可以尝试设置Requests使用的httplib后端使用的HTTP版本。
在 Python 2 上,您可以这样做:
import httplib
httplib.HTTPConnection._http_vsn = 10
httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'
在 Python 3 中,httplib 被重命名为 http.client,所以你可以这样做
import http.client
http.client.HTTPConnection._http_vsn = 10
http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
Requests 的 GitHub 上的Issue 2341 表明,至少有一个人这样做过——而且 Requests 绝对不支持它。特别是,该库将不努力确保只发送与 HTTP/1.0 兼容的标头,因此很可能会出现问题。
不支持使用 Requests 库设置 HTTP 协议版本的方法。