内容长度='' Django视图 - HTTP BODY为空

时间:2015-01-29 02:20:29

标签: django apache web-services http-headers mod-wsgi

我有一个接收SOAP请求的Django视图,我返回一个SOAP响应(content_type =' text / xml')

发送请求的客户端(ORACLE OSB)向我发送SOAP信封但由于某种原因,当我使用Django Test Server收到此请求时,request.body为空。

我记录了请求对象,并将其粘贴到http://dpaste.com/0XD485E 我注意到的是CONTENT_LENGTH没有价值。

我在HTTP 1.1 RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4中读到了这个,并且它说明了

  

"如果收到带有Transfer-Encoding标头字段的消息   和Content-Length头字段,后者必须被忽略。"

RFC还提到了

  

"接收实体的所有HTTP / 1.1应用程序必须接受   "分块"转移编码(第3.6节),从而允许这种机制   在无法确定消息长度时用于消息   提前。"

我也尝试过Apache,但Apache / mod_wsgi甚至没有让请求进入Django视图,但是返回了HTTP 411错误。

摆脱这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这解决了我的问题:

  1. 将“WSGIChunkedRequest On”添加到您的sites.conf
  2. 使用“sudo a2enmod proxy”和“sudo a2enmod proxy_http”启用mod_proxy
  3. 最后按照此SO主题解决其余问题:Processing chunked encoded HTTP POST requests in python (or generic CGI under apache)

  4. (重新加载Apaches配置并重新启动Apache。)