1

One of client of our web service uses axis2 application that sends HTTP 1.1 query with:

Transfer-Encoding: chunked

header. Such a query is refused by our Apache 2.2 with message:

<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 />

In Apache logs there is:

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

When I send such message without Transfer-Encoding: chunked and with Content-Length all works ok. I searched how to solve this problem, but I found only how to disable Transfer-Encoding: chunked on client side.

As a client I used soapUI where I added/removed Transfer-Encoding: chunked header (when I added this header soapUI do not send Content-Length header). As a server I use: Apache/2.2.3 on CentOS, but I tested it also with "fresh" install of Apache 2.2.15 on Windows.

Is there any way to enable chunked queries on the server side?

Michał Niklas
  • 248
  • 1
  • 3
  • 10

2 Answers2

1

from what i found on apache's web site, chunking is only supported by HTTP/1.1, perhaps your server or software is set for HTTP/1.0 in the configuration. http://ws.apache.org/axis2/1_0/http-transport.html

other than that, i would look at the file indicated in the error message and see if there is any hinting at chunking going on there. {DocumentRoot}/app/webservices/soap.hdb

cpbills
  • 2,692
  • 17
  • 12
  • Thanks, but the link shows how to configure axis (i.e. client side). I think there is no problem with resource because it can be retrieved with "unchunked" query. Apache HTTP server refuses query without Content-Length and do not try to do anything else with such query. – Michał Niklas May 18 '10 at 04:51
  • is there anything in that file that hints at chunking? – cpbills May 18 '10 at 21:01
  • Normally {DocumentRoot}/app/webservices/soap.hdb is served by module. But it seems that Apache do not try to execute this module. I can enable debug mode for this module and then it creates log when invoked. For queries without Content-Length such log is not created. – Michał Niklas May 19 '10 at 04:53
  • It seems that the module that is used do not accept chunked queries. Thanks! – Michał Niklas Jun 18 '10 at 10:03
0

You could disable/enable chuncking on axis2.xml

Chuncking means that while transfering the total size is unknown, this is helpful when dynamic content is generated.

Hints:

HTTP 1.0 doesn't support chuncked encoding.

  • OK. I know it. I know how chunked HTTP request looks and I know most clients (soapUI, default Perl and Python SOAP libraries) do not use chunked request. But I have "dummy" client who do not want to change default axis2 settings (HTTP 1.1 with chunking). So maybe it would be easier for me to enable chunking queries (no Content-Length) on Apache. – Michał Niklas May 21 '10 at 19:26