Серверы и ИИ: практическое применение
Продолжение HTTP-загрузки: 200 нельзя дописать как очередной сегмент
Range-запрос может получить 206 Partial Content, но клиент должен проверить Content-Range и вид представленных частей. Content-Length такого ответа обычно относится к переданному содержимому сообщения, а не ко всему объекту. Одного статуса 206 недостаточно для правильного размещения сегмента в локальном файле.
If-Range связывает продолжение с validator сохранённого представления. Если условие больше не выполняется, сервер может проигнорировать Range и передать новое полное представление. Клиент, который без проверки дописывает любой успешный ответ в конец старого фрагмента, способен собрать неверный файл из разных версий.
Слабый ETag не подходит для генерации If-Range по правилам RFC 9110. Поэтому механизм cache validation и безопасное побайтовое продолжение нельзя смешивать. В проекте сохраняют validator, ожидаемую границу, полный размер при наличии и отдельный статус готовности после проверки результата.
В приёмке проверяют неизменный объект, замену между попытками и ответ с полным содержимым. Сверяют итоговые байты и обработку диапазона. Успешное сетевое получение оставшихся мегабайт не подтверждает целостность собранного объекта, пока не установлена принадлежность всех частей одной версии.
Основание — Selected IETF HTTP RFCs, exact numbered editions and sections cited, разделы RFC9110 §13.1.5 If-Range; §15.3.7 206 Partial Content. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Реальные зоны, resolver и HTTP-клиенты не испытывались. Это проектные критерии; номера RFC обозначают документы, а не подтверждённую поддержку всех возможностей конкретным устройством.