Проверяет понимание низкоуровневой работы HTTP и сетей.
Если нет Content-Length, сервер может перейти в chunked-encoding или закрыть соединение после ответа. Клиенту сложнее определить границы сообщения, а keep-alive хуже работает.
Content-Length говорит клиенту, сколько байт данных будет передано.
Если заголовок отсутствует:
Сервер переключается в chunked transfer-encoding (HTTP/1.1).
Клиент должен парсить поток chunk-за-chunk’ом.
Некоторые прокси и балансировщики начинают вести себя нестабильно.
Невозможно эффективно использовать pipelining/keep-alive.
В HTTP/1.0 сервер закрывает соединение, чтобы сигнализировать конец ответа.
Проблемы:
увеличенная задержка на чтение
больше системных вызовов
нестабильная работа между сервисами
В Go http.ResponseWriter сам выставляет Content-Length, если вы пишете в буфер.
Вывод: для стабильности и предсказуемости сетевого взаимодействия лучше всегда иметь Content-Length.