masterspammer (masterspammer) wrote,
masterspammer
masterspammer

413 Request entity too large

subj. это какая-то вещь в себе - отрыжка вебсервера, подавившегося излишками данных. Казалось бы всё понятно, льёшь слишком много - вот тебе статус.

Пример - есть форма "закачай файлик" и клиент (тот, который человек) по недомыслию выбрал видюшку на 2 гига. Уже при получении заголовка ясно - сейчас будет куча и нам оно не надо. Скрипт (не php, там всё по другому) УЖЕ может отказаться от получения данных - сразу (см. CONTENT_LENGTH) ясно, что их слишком много.

Первый сюрприз - а не может он отказаться (так чтоб от этого эффект был) - если данные не скачает скрипт, их скачает сам apache. Зачем? Да хотя бы для того, чтоб получить следующий запрос (на дворе 21-й век и connection как водится, keep-alive).

Второй сюрприз - если вдруг откажется, что можно не получать (я покопался в исходниках одного маленького вебсервера и внёс соответствующие изменения), то клиент (тот, который браузер) НЕ будет получать ответ, пока не отправит весь запрос.

Веб-сервер nginx умеет ограничивать получаемые данные. Однако он ведёт себя странно - сначала скачивает сколько можно, а потом обрывает соединение. Логично, то так себя вести осмысленно когда данных оказалось больше чем обещано (в CONTENT_LENGTH). Начинать скачивать заведомо избыточные данные - я не знаю, зачем это.

Получается, что реально ограничить пользователя в заливке файлов можно только разрывая соединение (иначе будет как в PHP - И данные передались И прочитать их нельзя), а ошибку, вынесенную в заголовок, выдать не получится.

Особенно циничной выглядит необходимость принять посылаемые данные для вывода ошибки 404.
Tags: cms, Обломы
Subscribe

  • (no subject)

    В общем, загад (вот гад!) не бывает богат. Из запланированного сделал абсолютный минимум. Эпиграфом субботы был анекдот про лягушку, ходившую по…

  • git

    Пропустил букву 'i'. Вышло так: $ gt fetch --all -p Программа 'gt' на данный момент не установлена. Вы можете установить её,…

  • Монитороложество

    Ковыряю телек - хочу отделить монитор. Прозвонил что куда - всё На плате - микросхема toshiba 203g04f0004, её описания нигде нет, только вот…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments