Могу ли я сигнализировать об ошибке в HTTP после загрузки данных?

0

Я хочу следующее:

  • Потоковая передача клиенту (возможно, большого) файла через HTTP, и после того, как файл уже был полностью передан клиенту (возможно), сигнализирует клиенту об ошибке (например, 404 не найден или внутренняя ошибка сервера 500).

В HTTP 1.x это кажется невозможным: об ошибках сообщается в заголовках, которые передаются перед телом.

Может, в HTTP / 2 это возможно? Как?

Я мог бы просто прервать соединение HTTP TCP, но в этом случае клиент может предположить, что ошибка была не 404 или 500 (в моем случае это означает ошибочное содержимое файла, которое необходимо стереть клиенту), а частично загруженный файл и в следующий раз может попытаться использовать Range:для добавления дополнительных данных к (неверным) загруженным данным.

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

4
  • Это потому, что я знаю, верны ли данные, по контрольной сумме, которую можно вычислить только после завершения потоковой передачи.
    porton
    29 минут назад
  • Если контрольная сумма не сработала, я хочу прервать текущую потоковую передачу и начать потоковую передачу заново, в идеале без того, чтобы клиент делал что-либо «настраиваемое», например, я мог бы сделать это с помощью перенаправления HTTP (на тот же URL-адрес?), Отправленного клиенту после неудачной потоковой передачи .
    porton
    24 мин. Назад
  • Может быть, на уровне TCP возможна ретрансляция? Возможно, это может быть хорошим дополнением к стандарту TCP, но при злоупотреблении может увеличить сетевую нагрузку ...
    porton
    22 минуты назад
  • ... или не увеличивать.
    porton
    22 минуты назад