Что означает лимит
Код 413 приходит, когда сервер или промежуточный узел отказывается принимать запрос, потому что его тело больше разрешённого. Чаще всего это загрузка файла: фото, документа, архива, видео. Но лимиту подвержены и большие формы, и JSON с обширными данными.
Важная особенность в том, что лимитов обычно несколько, и они выстроены цепочкой: веб-сервер, балансировщик, шлюз API, сама программа сайта, иногда сеть доставки контента. Сработать может любой, а ошибку показывает тот, кто сработал первым. Поэтому увеличение лимита в одном месте не всегда решает проблему.
Типичные причины: HTTP 413 Payload Too Large
Первая причина — файл действительно превышает разрешённый размер, указанный в правилах сервиса. Вторая — лимит на веб-сервере оставлен по умолчанию, а он рассчитан на небольшие запросы. Третья — кодирование: файл при отправке в формате формы может занимать заметно больше места, чем на диске, и небольшое превышение порога срабатывает неожиданно.
Есть и менее очевидные варианты: несколько файлов, отправляемых одним запросом, суммируются; сжатие не помогает, если файл уже сжат; промежуточный сервер между клиентом и сервером имеет собственный, более жёсткий порог.
Проверка размера и сети
Сначала посмотрите размер файла в свойствах и сверьте его с ограничением, которое сообщает сервис. Часто оно указано в подсказке возле кнопки загрузки или в справке. Если файл близок к пределу, попробуйте уменьшить его и повторить.
Затем откройте инструменты разработчика браузера, вкладку сети, и найдите запрос с кодом 413: в заголовках ответа иногда видно, какой именно сервер его вернул. Различие заметно по оформлению страницы ошибки: типовая страница веб-сервера означает лимит на входе, а страница самого сайта — ограничение приложения.
Решения для пользователя
Сожмите изображение, снизьте разрешение или качество видео, упакуйте документы в архив, но не превращайте в него уже сжатые форматы. Разбейте отправку на части, если сервис позволяет присоединять несколько файлов по отдельности. Для очень больших объёмов используйте облачное хранилище и отправляйте ссылку вместо самого файла.
Не помогут смена браузера и очистка кеша, если причина в лимите: он хранится на сервере и не зависит от вашего устройства.
Особые случаи: несколько файлов и шлюз перед сайтом
Если вы отправляете сразу несколько вложений, их размеры складываются, и общий запрос может упереться в порог даже тогда, когда каждый файл по отдельности допустим. Попробуйте загружать по одному.
На стороне администратора типичная ловушка — шлюз или сеть доставки контента перед сайтом. У них собственные ограничения на размер тела запроса, часто более жёсткие, чем у самого сервера приложения. Сообщение 413 приходит быстро, до того как запрос достиг приложения, и в журналах приложения о нём ничего нет. Ищите след в журнале ближайшего к клиенту узла.
Если возможности менять лимит нет, помогает архитектурное решение: клиент получает временную ссылку на хранилище и загружает файл напрямую, а сервер приложения получает только уведомление об успешной загрузке. Так основной сервер не превращается в узкое место и не ограничивает пользователей.
Что менять на сервере
Администратору стоит проверить параметр максимального размера тела запроса на веб-сервере, лимиты на шлюзе, а также настройки самой программы, например максимальный размер загружаемого файла в конфигурации языка. Изменять значения нужно по всей цепочке и с запасом, но разумным: слишком высокий предел открывает путь к перегрузке диска и памяти.
Для крупных файлов удобнее использовать загрузку частями или прямую передачу в хранилище, минуя основной сервер.
После изменения лимитов проверьте загрузку файла, близкого к новому пределу, и убедитесь, что запрос проходит через все узлы. Не забывайте о временных файлах: сервер должен иметь достаточно места для приёма больших данных, иначе вместо 413 пользователи получат другие ошибки. Регулярно просматривайте журналы отказов, чтобы понимать, какие размеры на практике запрашивают пользователи.