Веб сервер Apache не хочет пропускать тело POST запроса, если в заголовке запроса отсутствует Content-Length. Дело в том, что клиент использует Apache Axis2, который, насколько я понял по нарытой информации в гугле, не передаёт вышеуказанный заголовок. Соответственно передаваемый клиентом в теле POST запроса XML документ дальше веб сервера не проходит, хотя все заголовки запроса успешно передаются далее. Пробовал в заголовке запроса передавать «Transfer-Encoding: chunked», но это не помогло. Не подскажете, как можно решить данную проблемму? Можно ли как-то указать веб серверу, что такие запросы надо пропускать полностью?
Используется веб сервер Apache версии 2.2.16 на Debian Squeeze. Все данные передаются по HTTPS.
Всем спасибо, оказалось действительно проблема в FastCGI. Настроил mod_php и всё заработало. Просто все остальные хосты на этом сервере через FastCGI крутятся и не думал, что с ним могут быть траблы.
Эти переменные в виртуалхосте прописаны. Толку нет.
Ещё хотелось бы уточнить, что тело POST запроса получаю в PHP через $HTTP_RAW_POST_DATA и php://input. PHP 5.3, работает через FastCGI. При отправке тестового запроса с теми же заголовками, с которыми отправляет Axis2, плюс Content-Length POST данные передаются нормально. Стоит только убрать Content-Length и запрос приходит без данных, только заголовки.
Как вариант решения — поставьте перед апачем веб-акселератор, который в состоянии принять такой запрос, и дальше форварднет его апачу с этим хидером. Конкретную проксю указать не могу — не сталкивался с такой проблемой, надо пробовать. Возможно nginx, haproxy, varnish, squid…
Я тоже с ним не знаком. С помощью Аксиса к нам подключаются и обмениваюся данными по SOAP протоколу. Мне просто нужно разобраться, почему от них тело запроса не проходит, хотя с другими клиентами у них всё нормально, как они утверждают. Да и до этого, когда мы хостились у провайдера, вроде как всё работало. А после переезда на собственный сервак работать перестало. Щас пытаюсь тестовыми скриптами смоделировать ситуацию.
Хотя в описании вроде указана поддержка HTTP1.1.
У нас была проблема с заказчиками у которых сервер не поддерживал HTTP1.1 и соответственно CHUNKED POSTS. Отключили CHUNKED в запросах с клиента.