Большой текстовый ввод делает http пост неудачным - PullRequest
2 голосов
/ 29 сентября 2011

У меня есть форма в моем приложении, где технические специалисты вводят информацию о различных событиях или предпринятых действиях (например, обновление сервера).Проблема в том, что эти данные могут быть довольно длинными, и тогда моя форма перестает работать.Сервер возвращает ошибку 302 браузеру, если браузер пытается отправить данные, но так же часто браузер ничего не делает, когда я пытаюсь отправить.Если браузер ничего не делает, быстрый просмотр в Chrome Developer Tools показывает, что браузер пытается выполнить публикацию по правильному пути, но статус отображается как сбойный.Это всегда происходит, если текстовая область содержит более ~ 3500 символов.Я пытался изменить enctype, чтобы увидеть, что происходит, но это не решило проблему.

<form enctype="application/x-www-form-urlencoded" action="/some/path/" method="post" _lpchecked="1">
<fieldset>
    <input type="hidden" name="machineId" value="some_integer">
    <input type="hidden" name="eventId" value="some_integer">
    Titel:
    <select name="form[title]">
        <option>Some_option</option>
        <option>some_option</option>
    </select>

    <textarea name="form[text]" rows="25" cols="90"></textarea>
    <input type="submit" value="Spara" title="Spara">
</fieldset>
</form>

Есть идеи, почему это не работает и что можно сделать?

РЕДАКТИРОВАТЬ: мое приложение основано на PHP и работает на Debian / Apache.Мне не удалось найти какие-либо настройки, которые могут помешать правильной работе сообщения.У меня есть post_max_size, установленный на 8 МБ, но текст из 3500 символов не больше 8 МБ, так что ...

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Ваш текст через POST, скорее всего, не будет 1 байт / символ. Apache mod_security может фильтровать данные. И это может быть любое другое количество модов Apache, которые влияют на пост-шифрование. Вы можете проверить mb_get_info () и другие функции mb_ *, чтобы проверить, как PHP кодирует текст. Если вы не хотите копать слишком глубоко, из пары точек данных вы можете сделать обоснованное предположение о том, сколько байтов на символ используется в вашем POST и настроить post_max_size в соответствии с вашими потребностями.

Если вы не можете распечатать ошибки на экране, вы можете проверить

tail -n 30 /var/log/apache2/error.log #prints last 30 lines of error.log

сразу после вашего белого признака экрана, чтобы получить более подробную информацию об ошибках / предупреждениях и т. Д., Обнаруженных во время сценария.

Также обратите внимание, что post_max_size ограничен memory_limit ... Я не думаю, что это проблема, но это может быть что-то, чтобы рассмотреть для другого читателя.

0 голосов
/ 29 сентября 2011

какой язык на стороне сервера вы используете?может быть, вам нужно какое-то сжатие текста, подобное этому Алгоритм Хаффмана

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