Ответ отправлен в кодированной части передачи и указывает на ошибки, возникающие после того, как некоторые данные уже были отправлены
Я отправляю большое количество данных в своем ответе клиенту в формате кодирования с частичной передачей.
Как я должен иметь дело с любыми ошибками, которые происходят на полпути во время написания ответа?
Я хотел бы знать, существует ли какая-либо рекомендуемая HTTP-практика для этого, чтобы клиенты знали, что ответ действительно не является успешным, но что сервер столкнулся с некоторой проблемой.
1 ответ
Как только вы начали отправлять HTTP-заголовки клиенту, вы больше не можете отправлять что-либо еще. Вы должны закончить отправку ответа, который вы намеревались отправить, то есть фрагментированные данные и связанные заголовки. Если в середине этого процесса возникает ошибка, невозможно сообщить об этой ошибке клиенту. Все, что вы можете сделать, это закрыть соединение. Либо клиент не получает все заголовки, либо он не получает завершающий фрагмент длины 0 в конце ответа. В любом случае клиенту достаточно знать, что на сервере произошла ошибка при отправке.
Разделенные ответы могут использовать заголовок трейлера с некоторой проверкой целостности или статусом постобработки. Это может быть лучше, чем закрывать соединение, как описано в принятом ответе, потому что у вас может быть собственное сообщение об ошибке. Однако вы выиграете от этого только в том случае, если у вас есть контроль и над сервером, и над клиентом.