Карточка Middle net/http и middleware обновлено
Ограничение размера тела запроса
Вопрос
Как ограничить размер тела входящего запроса в net/http?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
r.Body = http.MaxBytesReader(w, r.Body, 1<<20): чтение сверх лимита вернёт ошибку http.MaxBytesError, а сервер закроет соединение.
Ответ
r.Body = http.MaxBytesReader(w, r.Body, 1<<20): чтение сверх лимита вернёт ошибку *http.MaxBytesError, а сервер закроет соединение.
Разбор
Без ограничения io.ReadAll(r.Body) или JSON-декодер можно заставить читать гигабайты.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
HTTP-сервис на стандартной библиотеке
Следующий вопрос
MaxIdleConnsPerHost в http.Transport
Термины по теме
Ещё по теме «net/http и middleware»
- Статистика access-логов: ошибки и p95 на Go
- Разбор сырого HTTP/1.1 запроса на Go
- Разбор query-строки URL с декодированием на Go
- Маршрутизатор с параметрами пути в стиле ServeMux
- Rate limiter на токен-бакете для middleware на Go
- Зачем закрывать resp.Body
- Таймаут http.DefaultClient
- Обработчики net/http и горутины