Кратко
Expect: 100-continueсообщает, что клиент удерживает тело, чтобы метод, цель и заголовки могли сначала вызвать окончательный отказ.- 100 лишь предлагает продолжить передачу. Источник всё равно обязан выдать конечный статус, а посредник иногда создаёт временное разрешение сам.
- Клиент может перестать ждать и отправить тело; старый узел, потерявший 1xx, не должен превращать оптимизацию во взаимную блокировку.
Решаемая часть пришла раньше дорогой
Строка запроса и заголовки предшествуют содержимому. Запрещённый метод, неверная цель или слабые полномочия можно распознать до получения большого файла.
Немедленная отправка тратит канал перед 401 или 405. Пауза без общего сигнала создаёт тупик: клиент ждёт разрешения, сервер — тела. RFC 2068 в 1997 году определил информационный статус 100 и сложную совместимость с HTTP/1.0, где посредник мог его не передать.
Expect сделал ожидание явным
RFC 2616 добавил Expect: 100-continue. Сервер получил возможность отличить удерживаемое тело от уже идущего.
Ожидающий клиент обязан объявить намерение; без тела ожидание недопустимо. Если байты уже пришли, сервер может не посылать бесполезный 100. Получив полные заголовки HTTP/1.1, признак тела и Expect, источник немедленно выдаёт определимый по заголовкам финал или 100, не ожидая тела.
Продолжение не означало успеха
1xx не завершает запрос. После 100 сервер принимает и обрабатывает тело, затем посылает конечный статус, если соединение не оборвалось.
Смысл узок: пока нет причины остановить передачу. Не подтверждены личность, правильность, сохранение, выполнение или успех. Это не подготовка транзакции и не двухфазная фиксация; управляются байты, а не итог метода.
Прокси мог разрешить путь, но не принять операцию
Прокси выдаёт известный ему финал либо передаёт заголовки. Зная о старом следующем узле, он иногда генерирует 100. Это доказывает готовность участка нести данные, а не то, что источник их увидел или принял.
417 говорит, что цепочка не поддержала ожидание. Повтор без него убирает оптимизацию, но не делает повторение метода с эффектами безопасным. Нужно знать, что достигло источника.
Молчание не получило бесконечного права остановки
RFC 7231 и RFC 9110 не задают обязательного срока. Клиент может отправить тело без 100 и не должен ждать бесконечно.
Старый посредник способен потерять 1xx. Локальный тайм-аут меняет возможный расход байтов на гарантированное продвижение и не превращает молчание во власть. Универсального порога размера и задержки нет; для малого тела дополнительный обмен может быть дороже.
После раннего финала остаются границы сообщения
Конечный ответ может прийти во время отправки. Сервер закрывает соединение либо читает и отбрасывает остаток, сохраняя границу следующего сообщения. Вердикт приложения и судьба соединения независимы; остаточные байты не должны стать ложным новым запросом.
Источники и пределы
Закрытый набор — RFC 2068, RFC 2616, RFC 7231 и RFC 9110. Он устанавливает историю и смысл, но не нынешнее внедрение, тайм-ауты, экономию или поведение посредников.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
