Назад | Перейти на главную страницу

Проблема с «Transfer-Encoding: chunked» в Apache 2.2

Один из клиентов нашего веб-сервиса использует приложение 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 заголовок). В качестве сервера я использую: Apache / 2.2.3 в CentOS, но я тестировал его также с "свежей" установкой Apache 2.2.15 в Windows.

Есть ли способ включить фрагментированные запросы на стороне сервера?

из того, что я нашел на веб-сайте Apache, chunking поддерживается только HTTP / 1.1, возможно, ваш сервер или программное обеспечение настроены для HTTP / 1.0 в конфигурации. http://ws.apache.org/axis2/1_0/http-transport.html

кроме этого, я бы посмотрел на файл, указанный в сообщении об ошибке, и посмотрел, есть ли какие-либо намеки на то, что там происходит разбиение на части. {DocumentRoot}/app/webservices/soap.hdb

Вы можете отключить / включить разбиение на оси2.xml

Разделение означает, что, хотя общий размер передачи неизвестен, это полезно при создании динамического контента.

Подсказки:

HTTP 1.0 не поддерживает фрагментированное кодирование.