Кратко
- В
draft-ietf-httpbis-resumable-upload-12полеUpload-Offsetподтверждает префикс представления, обработанный временным ресурсом, и обещает, что клиенту не придётся передавать его повторно. - Если сервер потерял требуемое состояние, он должен деактивировать ресурс; монотонный счётчик нельзя реконструировать из надежды, а его значение всё равно не доказывает завершение, целостность, полномочие или commit цели.
После аварии узел хранения поднялся раньше журнала состояния. Файлы с частями были видны, а подтверждённое смещение — нет. Сервис мог выбрать минимальный размер найденных сегментов, максимальный или значение из кеша. Любое число позволило бы продолжить работу и улучшило бы показатель доступности.
Ни одно число не сохраняло смысл прежней квитанции.
Revision 12 документа Resumable Uploads for HTTP опубликована 6 июля 2026 года. Это активный Internet-Draft рабочей группы HTTP с намерением Standards Track и сроком до 7 января 2027 года, а не RFC, отчёт о внедрении или результат совместимости. Проект требует при потере части состояния отключить upload resource и отказать в дальнейших операциях. Такая остановка — не слабость протокола, а защита доказательства.
Временный ресурс отвечает за продолжение
Исходный запрос направлен ресурсу, который понимает прикладной смысл метода: создать, заменить, принять или обработать объект. Для возобновления сервер создаёт отдельный временный ресурс одной конкретной репрезентации. Клиент запрашивает прогресс, добавляет байты или отменяет загрузку.
Разделение не позволяет транспортному регистратору стать прикладным принципалом. Временный ресурс хранит непрерывность. Цель решает, что делать с полным содержимым и заголовками. Наличие URI ещё не означает существование конечного объекта, а право на добавление не означает право завершить исходную операцию.
После завершения сервер может сразу удалить временный ресурс либо ненадолго оставить для клиента, потерявшего финальный ответ. Поэтому более поздняя недоступность URI без знания политики хранения не равна ни успеху, ни отказу.
Offset подтверждает обработанный префикс
Смещение — количество байтов представления, обработанных приложением upload resource. Транспорт мог доставить и подтвердить больше; часть данных ещё способна находиться в буферах и не входить в устойчивое состояние возобновления.
Ответ с Upload-Offset даёт точное обещание: указанный префикс обработан и не потребует повторной передачи. Клиент вправе освобождать память и удалять локальные куски, сохранённые только для retry. Это сильная операционная гарантия.
Она не утверждает, что байты попали в конечное хранилище, реплицированы, проверены по digest, просканированы, одобрены или опубликованы. Подтверждение прогресса имеет узкую область и не содержит решения целевого ресурса.
Обработанные данные нельзя убрать из временного состояния, поэтому offset не должен уменьшаться. Если состояние частично потеряно, ресурс деактивируется. Возвращение меньшего числа нарушило бы обещание «не пересылать», а большего могло бы создать пропуск. Кешированное число без подтверждающего состояния остаётся воспоминанием, не квитанцией.
Равенство длине не означает закрытие
Длина представляет полный размер, когда он известен. Offset представляет обработанный префикс. Проект прямо допускает равенство этих значений при незавершённой загрузке.
Потоковый источник может временно исчерпать данные, не объявив конец. Клиент может передать всё частями, а затем послать пустой PATCH с признаком завершения. Upload-Complete — отдельное логическое состояние, а не вычисляемое свойство двух чисел.
В ответе на создание или добавление истинное значение означает, что применяются семантики первоначальной цели. Цель может ответить рано, и признак окажется истинным до передачи всей репрезентации. Поэтому complete описывает решение протокола, а не универсальное утверждение «все байты доставлены».
104 сообщает координату восстановления
Предварительный статус 104 Upload Resumption Supported позволяет вернуть URI временного ресурса, ограничения и текущий offset. Получив координату до разрыва, клиент может позже спросить состояние и продолжить.
Это не финальный ответ цели. При оптимистической стратегии клиент сразу посылает всё содержимое и надеется вовремя увидеть 104. Если разрыв происходит раньше либо посредник удаляет предварительный ответ, сервер может иметь часть байтов, а клиент — не знать адреса продолжения.
Осторожная стратегия сначала создаёт пустой upload resource, получает URI и лимиты, затем передаёт данные. Дополнительный обмен покупает известный путь возврата. Ни одна стратегия не превращает возможность продолжить в факт принятия объекта.
409 сохраняет единственную последовательность
Каждый append включает offset с точки зрения клиента. При несовпадении сервер отвечает 409 Conflict, сообщает своё смещение и признак завершения. Барьер не даёт потерянному ответу или позднему повтору вставить один участок дважды.
Клиент заново читает состояние, проверяет идентичность исходной репрезентации и применяет явное правило сверки. Повтор от локального курсора может продублировать уже обработанное. Доверие удалённому курсору без проверки источника может соединить разные данные.
Параллельные передачи на один upload resource не поддерживаются; добавление и отмена сериализуются. Но серверная очередь не возвращает клиенту потерянный финальный ответ. Для исходной операции всё равно нужны идемпотентность и проверка результата.
Целостность следует за сборкой
Правильное смещение не подтверждает digest. Поля целостности имеют собственную область, момент проверки и реакцию на несовпадение. Система должна сохранить факт запроса, вычисления и успешного сравнения.
Возобновляемая передача разбивает представление по сообщениям. Сканер, рассматривающий каждый PATCH как отдельный полный файл, способен пропустить опасную последовательность на границе двух частей. Проверять нужно собранное представление до исполнения, публикации или передачи чувствительному обработчику.
Метаданные также недоверенны. Имя, тип и указание места не становятся безопасными из-за верного счётчика. Непрерывность, целостность и допустимость — разные ворота.
Право завершить проверяется заново
URI временного ресурса позволяет менять состояние. Его следует делать трудным для угадывания и защищать авторизацией. Секретность ссылки снижает риск обнаружения, но не заменяет контроль доступа.
Между созданием и завершением проходят часы или дни. Роль пользователя, квота, договор или согласование могут измениться. Проект указывает на риск между моментом проверки и использованием и рекомендует повторно проверить привилегии и квоты перед финализацией.
Полная лестница выглядит так: доставка транспортом; обработанный префикс; сверенные offset и length; явное завершение; целостность и политика содержимого; действующая авторизация; commit цели; последующий эффект. Потеря состояния ломает лестницу на второй ступени и не чинится красивым числом.
Источники и ограничения
Замороженный пакет включает revision 12, историю Datatracker, рабочую поверхность HTTP и RFC о семантике и версиях HTTP, QUIC, Digest Fields, PATCH, Problem Details и Content-Disposition. Он устанавливает механизм и ограничения, но не распространённость, производительность, реальные инциденты, совместимость или практику конкретного поставщика.
Источники
- https://datatracker.ietf.org/doc/draft-ietf-httpbis-resumable-upload/
- https://datatracker.ietf.org/doc/draft-ietf-httpbis-resumable-upload/history/
- https://www.ietf.org/archive/id/draft-ietf-httpbis-resumable-upload-12.html
- https://www.ietf.org/archive/id/draft-ietf-httpbis-resumable-upload-12.txt
- https://github.com/httpwg/http-extensions/labels/resumable-upload
- https://www.rfc-editor.org/rfc/rfc9110.html
- https://www.rfc-editor.org/rfc/rfc9111.html
- https://www.rfc-editor.org/rfc/rfc9112.html
- https://www.rfc-editor.org/rfc/rfc9113.html
- https://www.rfc-editor.org/rfc/rfc9000.html
- https://www.rfc-editor.org/rfc/rfc9530.html
- https://www.rfc-editor.org/rfc/rfc5789.html
- https://www.rfc-editor.org/rfc/rfc9457.html
- https://www.rfc-editor.org/rfc/rfc6266.html
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
