Я работаю над страницей, которая принимает файлы. Теоретически я могу определить, когда файл, который они мне отправляют, слишком велик (просмотрев Content-Length их ответа), и отказываются принять загрузку, возвращает HTTP 413 «Request Entity Too Large», ошибка.Как я могу ограничить размер запросов HTTP POST в mod_perl?
Тем не менее, кажется, что просто делает, что не хватает - Firefox, по крайней мере, , по-прежнему будет продолжать посылать остальную часть файла (который может занять долгое время), прежде чем он показывает мою страницу ошибки.
HTTP spec говорит, что я: «МОЖЕТ закрыть соединение, чтобы клиент не продолжал запрос». Тем не менее, делая «закрытие STDIN», «shutdown STDIN, 0» или какой-то вариант этого, похоже, не делает трюк - Firefox все еще продолжает отправлять файл.
Я подозреваю, что, когда мой обработчик mod_perl закрывает соединение, просто закрывает соединение между собой и Apache; Apache поддерживает соединение между ним и клиентом. Есть ли способ сообщить Apache, чтобы отключить соединение? В противном случае это кажется отличным DoS-вектором.
Любые предложения приветствуются.
Возможно, вы также захотите подумать о том, что запрос будет разложен, и вы не узнаете размер тела запроса до тех пор, пока не появятся все куски ... –