我们的 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: chunked
和Content-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 不支持分块编码。