Один из моих клиентов сообщил об ошибке HTTP 413 при использовании нашего приложения.
Я понимаю, что это ошибка, говорящая о слишком большом размере:
413 Слишком большая полезная нагрузка
Однако клиент пытался отправить очень маленький файл (менее 12 КБ).Мало того, что, пытаясь снова и снова, мы не получаем эту ошибку 413.Мы не можем повторить ошибку.
У меня не установлен modsecurity.Я не использую PHP (мой код на C ++).
Мой CGI фактически сказал мне, что соединение между Apache и им было разорвано в середине потока, поэтому я могу отмахнуться от того, что ошибка генерируется моим кодом.Это должно быть на стороне Apache2.
При поиске того, что может вызвать проблему, я обнаружил несколько вещей, которые не соответствуют нашей среде.
- URL-адрес слишком длинный
- Используется GET вместо POST
- Устанавливается modsecurity, и один из загружаемых файлов слишком велик
- Используется PHP, и его размер больше, чем разрешено по php.ini
Я уверен, что у меня нет modsecurity или PHP на этом компьютере.
URL-адрес очень короткий (63 символа в оригинале), и журнал ясно показывает, что POSTиспользовался.Здесь у меня есть журнал Apache2:
finball.m2osw.com: 443 50.255.47.1 - - [03 / Oct / 2018: 22: 10: 59 +0000] "POST / finball / invoice /finball1-56149 HTTP / 1.1 "413 345" www.example.com "" https://www.example.com/finball/invoice/finball1-56149?a=edit" "Mozilla / 5.0 (Windows NT 6.1; rv: 62.0) Gecko / 20100101 Firefox / 62.0" TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384
И в моем журнале из моего приложения четко сказано, что сокет закрывается (в данном случае сокет - это stdin, канал между Apache2 и CGI):
2018/10/03 22:10:59 finball1 Snap [22975]: фатальная ошибка: моментальный дочерний процесс: произошла ошибка при чтении среды из сокета в дочернем процессе сервера (отсутствует первая граница POST.). (503 Сервис недоступен: нестабильное сетевое соединение) (в функции "die ()") (snap_child.cpp: 6845)
Мы ожидаем данные POST
, и они никогда не поступали.Затем мое приложение возвращает ошибку 503. Однако, как мы видим из журналов Apache, клиент получил вместо него 413.
Whиначе может заставить Apache2 вернуть код ошибки 413 HTTP?