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 错误。
摆脱这种情况的最佳方法是什么?
这解决了我的问题:
- 将 "WSGIChunkedRequest On" 添加到您的 sites.conf
- 使用 "sudo a2enmod proxy" 和 "sudo a2enmod proxy_http"
启用 mod_proxy
最后按照这个 SO 线程获取其余解决方案:
(重新加载 Apache 配置并重新启动 Apache。)
我有一个接收 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 错误。
摆脱这种情况的最佳方法是什么?
这解决了我的问题:
- 将 "WSGIChunkedRequest On" 添加到您的 sites.conf
- 使用 "sudo a2enmod proxy" 和 "sudo a2enmod proxy_http" 启用 mod_proxy
最后按照这个 SO 线程获取其余解决方案:
(重新加载 Apache 配置并重新启动 Apache。)