【问题标题】:CONTENT-LENGTH='' Django View - HTTP BODY is EmptyCONTENT-LENGTH='' Django 视图 - HTTP 正文为空
【发布时间】:2015-01-29 02:20:29
【问题描述】:

我有一个接收 SOAP 请求的 Django 视图并返回一个 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 中读到了这一点,它说

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

RFC 也提到了

“所有接收实体的 HTTP/1.1 应用程序必须接受 “分块”传输编码(第 3.6 节),因此允许这种机制 用于无法确定消息长度时的消息 提前。”

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

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

【问题讨论】:

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


    【解决方案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。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多