Задать вопрос
andycaramba
@andycaramba
Web Developer (JavaScript, PHP, Anything else)

Apache и POST запрос без Content-Length?

Здравствуйте.

Веб сервер Apache не хочет пропускать тело POST запроса, если в заголовке запроса отсутствует Content-Length. Дело в том, что клиент использует Apache Axis2, который, насколько я понял по нарытой информации в гугле, не передаёт вышеуказанный заголовок. Соответственно передаваемый клиентом в теле POST запроса XML документ дальше веб сервера не проходит, хотя все заголовки запроса успешно передаются далее. Пробовал в заголовке запроса передавать «Transfer-Encoding: chunked», но это не помогло. Не подскажете, как можно решить данную проблемму? Можно ли как-то указать веб серверу, что такие запросы надо пропускать полностью?

Используется веб сервер Apache версии 2.2.16 на Debian Squeeze. Все данные передаются по HTTPS.
  • Вопрос задан
  • 5821 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
andycaramba
@andycaramba Автор вопроса
Web Developer (JavaScript, PHP, Anything else)
Всем спасибо, оказалось действительно проблема в FastCGI. Настроил mod_php и всё заработало. Просто все остальные хосты на этом сервере через FastCGI крутятся и не думал, что с ним могут быть траблы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@Vampiro
Content-Encoding gzip?
Ответ написан
@zuborg
Как вариант решения — поставьте перед апачем веб-акселератор, который в состоянии принять такой запрос, и дальше форварднет его апачу с этим хидером. Конкретную проксю указать не могу — не сталкивался с такой проблемой, надо пробовать. Возможно nginx, haproxy, varnish, squid…
Ответ написан
VBart
@VBart
Как по вашему веб-сервер должен узнать где заканчивается тело запроса без Content-Length или chunked encoding?
Ответ написан
andycaramba
@andycaramba Автор вопроса
Web Developer (JavaScript, PHP, Anything else)
Щас попросил скинуть реальный запрос и посмотрел логи фомируемые mod_security. По логам вроде всё правильно и всё проходит.
Ответ написан
BrightGenie
@BrightGenie
попробуйте убрать чанкед программно в коде:
Options option = client.getOptions();
option.setProperty(HTTPConstants.CHUNKED,false);

вот тут примеры:
wso2.org/library/209
www.herongyang.com/WSDL/Java-Axis2-141-Turn-Off-Chunked-HTTP-Flag.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы