Допустимо ли сервер отправлять HTTP-ответ до получения всего запроса?

Рассмотрим большой HTTP-запрос:

POST /upload HTTP/1.1 Content-Type: multipart/form-data Content-Length: 1048576 ... 

Теперь клиент начинает загружать мегабайт данных, что может занять некоторое время. Тем не менее, сервер определяет, что HTTP-авторизация необходима, поэтому он решает, что будет отвечать HTTP 401 Unauthorized .

ДОЛЖЕН, чтобы сервер подождал, пока он не получит весь запрос (IE, заголовки + CRLF CRLF + байты Content-Length ), прежде чем он сможет ответить?

С практической точки зрения, такое поведение нарушит любые браузеры? В любом случае браузеры продолжают загружать файл, или они перестанут передавать, если они получат «преждевременный» ответ?

Что еще более важно, в этом случае они смогут успешно пройти аутентификацию и начать загрузку снова (с учетными данными), или это ненадежно отключить загрузку, как это?

Рассматривая RFC 2616, который определяет протокол, в Разделе 8.2.2 «Мониторинг подключений для сообщений о статусе ошибок», он указывает

Клиент HTTP / 1.1 (или более поздний), отправляющий тело сообщения, ДОЛЖЕН отслеживать сетевое соединение для состояния ошибки, пока он передает запрос. Если клиент видит состояние ошибки, он ДОЛЖЕН немедленно прекратить передачу тела.

Поэтому я бы сказал, что вы можете перепрыгнуть по ошибке 401. А затем посмотрев 10.4.2 401 Несанкционированный

Запрос требует аутентификации пользователя. Ответ ДОЛЖЕН включать поле заголовка WWW-Authenticate (раздел 14.47), содержащее вызов, применимый к запрашиваемому ресурсу. Клиент МОЖЕТ повторить запрос с подходящим полем заголовка авторизации

Указывает, что клиент может повторить попытку с подходящими учетными данными.

Я не проводил никаких экспериментов, чтобы увидеть, как работают браузеры.

  • Android: UnknownHostException
  • Упреждающий базовый аут с HttpUrlConnection?
  • angular2 resolveAndCreate HTTP - отсутствует HTTP_PROVIDERS в RC7
  • REST API - PUT vs PATCH с примерами реальной жизни
  • Для передачи файлов ftp работает лучше, чем http?
  • Отправка файлов с помощью POST с HttpURLConnection
  • HttpServletRequest для полного URL-адреса
  • Http Переадресация на https Иногда приводит к «эта страница содержит другие ресурсы, которые не являются безопасными»
  • Каков самый простой способ вызвать Http GET url с помощью Delphi?
  • Заставить браузер загружать «https» версию веб-сайта, а не «http»?
  • Насколько велика строка пользовательского агента?
  • Interesting Posts

    В Java, в чем разница между this.method () и методом ()?

    Outlook 2013 + Gmail приводит к появлению многих сообщений в черновиках даже после их отправки

    Неудачный fread () int, хранящийся в двоичном файле, segmentation fault

    Как использовать workbook.saveas с автоматической перезаписью

    Получение пароля на C без использования getpass (3)?

    Как проверить активное подключение к Интернету на iOS или macOS?

    Как я могу отменить регистрацию «анонимного» обработчика событий

    Проблема с постоянными маршрутами и VPN-подключением в Windows 7

    Вызывается: java.security.UnrecoverableKeyException: невозможно восстановить ключ

    Ошибка java.lang.OutOfMemoryError: превышен верхний предел GC

    Служба Android останавливается, когда приложение закрыто

    MySQL Server ушел при импорте большого файла sql

    Будет ли запрос, который может занять часы для выполнения, будет выполняться на удаленном сервере, если я закрою соединение после выполнения команды?

    Прочитать последнюю строку текстового файла

    Попытка создать файл в Android: open failed: EROFS (файловая система только для чтения)

    Давайте будем гением компьютера.