Apache 2.2 中的“Transfer-Encoding: chunked”问题

Apache 2.2 中的“Transfer-Encoding: chunked”问题

我们的 Web 服务的一个客户端使用 axis2 应用程序发送 HTTP 1.1 查询:

Transfer-Encoding: chunked

标头。我们的 Apache 2.2 拒绝了此类查询,并显示以下消息:

<title>411 Length Required</title>
</head><body>
<h1>Length Required</h1>
<p>A request of the requested method POST requires a valid Content-length.<br />

Apache 日志中有:

[Mon May 17 09:06:04 2010] [error] [client 127.0.0.1] chunked Transfer-Encoding forbidden: /app/webservices/soap.hdb

当我发送这样的消息时,没有Transfer-Encoding: chunkedContent-Length所有工作都正常。我搜索了如何解决这个问题,但我只找到了如何Transfer-Encoding: chunked在客户端禁用。

作为客户端,我使用 soapUI 添加/删除了Transfer-Encoding: chunked标头(当我添加此标头时,soapUI 不会发送Content-Length标头)。作为服务器,我使用:CentOS 上的 Apache/2.2.3,但我也在 Windows 上使用“全新”安装的 Apache 2.2.15 对其进行了测试。

有什么方法可以在服务器端启用分块查询吗?

答案1

从我在 apache 网站上找到的信息来看,chunking仅支持 HTTP/1.1,也许您的服务器或软件在配置中设置为 HTTP/1.0。http://ws.apache.org/axis2/1_0/http-transport.html

除此之外,我会查看错误消息中指示的文件,看看是否有任何暗示表明其中正在进行分块。{DocumentRoot}/app/webservices/soap.hdb

答案2

您可以在 axis2.xml 上禁用/启用分块

分块意味着虽然传输的总大小未知,但这在生成动态内容时很有帮助。

提示:

HTTP 1.0 不支持分块编码。

相关内容