Могут ли HTTP-серверы выдавать ответы при использовании запроса?

Рассмотрим http-сервер, который отражает тело запроса в ответ. В псевдокоде:

recv_req_headers()
send_resp_headers()
while have_req_body_data:
    chunk = recv_req_body_chunk()
    send_resp_body_chunk(chunk)

Аналогично, рассмотрим http-клиент, который отправляет весь запрос перед прочтением ответа:

send_req_headers()
send_req_body()
recv_resp_headers()
recv_resp_body()

Теперь, когда эти двое пытаются связаться, они блокируются, так как сервер перестанет потреблять запрос, как только его буферы отправки заполнятся. В этот момент обе стороны блокируются в попытке отправить данные другой стороне.

Какая сторона нарушает спецификации HTTP? Я прочитал RFC 7230 и RFC 7231, но не смог найти руководство ни в одном. Есть похожие вопросы, но нет удовлетворительных ответов.

0 ответов

Другие вопросы по тегам