Ошибка HTTP 411 с J2ME -> nginx + apache + django - PullRequest
2 голосов
/ 26 декабря 2009

У нас есть производственное веб-приложение, созданное с использованием django. Он развернут на nginx с прокси-сервером apache, который обрабатывает приложение django через WSGI. ОС Ubuntu.

В дополнение к веб-интерфейсу мы недавно разработали клиент J2ME для загрузки файлов через мобильный телефон. J2ME передает файл с Transfer-Encoding, установленной как «Chunked» и длиной содержимого, равной нулю; это стандартный способ для инфраструктуры J2ME, и, очевидно, его нельзя изменить.

Проблема в том, что ни nginx, ни apache не разрешают порцию данных с нулевой длиной содержимого и возвращают HTTP 411 ответ об ошибке . Django также кажется проблематичным, но его можно легко исправить.

Мало решений в сети предлагают перекомпилировать nginx и apache, но я не хочу вдаваться в подробности. Может ли быть гораздо более простое решение?

1 Ответ

1 голос
/ 07 июля 2010

По моему опыту, J2ME переключается на кодирование по частям, если вы используете OutputStream.flush (). Избегайте сброса, просто напишите в OutputStream и немедленно закройте его. Я был в состоянии передать POST для установки Apache / Django с J2ME просто отлично. Я получил 411 ошибок из-за использования flush (). Как только я удалил его, все заработало нормально. Я не устанавливал Content-Length вручную, он был установлен автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...