【发布时间】:2015-11-05 08:15:57
【问题描述】:
我目前正在编写一个 HTTP 客户端来对返回 HTTP 响应的 URL 执行 HTTP POST。
但是,对于错误消息代码 400 和 500,它会发回非分块 HTTP 响应,而对于成功消息代码 201,它会发送分块响应。
在请求中,我设置了内容长度,所以我不确定为什么它仍然向我们发送分块传输编码。我可以在请求中设置任何其他标头,告诉 HTTP 服务器不要发送分块编码吗?
headerList.append("POST /v2/charges HTTP/1.1")
headerList.append("Content-Type: application/json")
headerList.append("host: xxxxxxxxx")
headerList.append("request-id: ABCD001123")
headerList.append("Content-length: %d" %len(Msg))
hostReqHeader = "\r\n".join(headerList)
reqData = hostReqHeader + '\r\n\r\n' + qbPosMsg
我使用套接字来发送这些 HTTP 消息,而不是使用 httplib 或请求库。
【问题讨论】:
-
坏消息:RFC7230, ¶4.1,“接收者必须能够解析和解码分块传输编码。”因此,没有通用的标准方法来防止分块编码。我想可能有一种特定于您的服务器且超出标准范围的方法。你用的是什么服务器?
-
另见 ¶4.3,“客户端不得在 TE 中发送分块传输编码名称;HTTP/1.1 接收者始终可以接受分块。”
标签: python http http-headers chunked-encoding