CONTENT-LENGTH='' Django 视图 - HTTP BODY 为空

CONTENT-LENGTH='' Django View - HTTP BODY is Empty

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

发送请求的客户端 (ORACLE OSB) 向我发送了一个 SOAP 信封,但由于某种原因,当我使用 Django 测试服务器收到此请求时,request.body 是空的。

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

我在 HTTP 1.1 RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4 中读到过这个

"If a message is received with both a Transfer-Encoding header field and a Content-Length header field, the latter MUST be ignored."

RFC 还提到

"All HTTP/1.1 applications that receive entities MUST accept the "chunked" transfer-coding (section 3.6), thus allowing this mechanism to be used for messages when the message length cannot be determined in advance."

我也用 Apache 尝试过,但是 Apache/mod_wsgi 甚至没有让请求进入 Django 视图,但是 return 编辑了一个 HTTP 411 错误。

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

这解决了我的问题:

  1. 将 "WSGIChunkedRequest On" 添加到您的 sites.conf
  2. 使用 "sudo a2enmod proxy" 和 "sudo a2enmod proxy_http"
  3. 启用 mod_proxy
  4. 最后按照这个 SO 线程获取其余解决方案:

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