Подтвердить что ты не робот

Является ли HTTP/1.1 запрос неявным продолжением по умолчанию?

Решено: вставляя байты, я понял, что я пропускаю пустые строки между кусками...


Требуется ли запрос HTTP/1.1 указать заголовок Connection: keep-alive или он всегда поддерживается по умолчанию?

Это руководство заставило меня подумать; что, когда мой HTTP-сервер получает запрос 1.1, он остается в живых, если явно не получает заголовок Connection: close.

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


Здесь httperf --hog --port 42042 --print-reply body отправляет:

GET / HTTP/1.1
User-Agent: httperf/0.9.0
Host: localhost

И вот мой ответ сервера:

HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Length: 18

12
Hello World      1
0

httpref быстро распечатывает ответ, но затем просто сидит там, ни одна из сторон не закрывает соединение, а httpref не выходит.

Где моя ошибка?

4b9b3361

Ответ 1

Из RFC 2616, раздел 8.1.2:

Значительное различие между HTTP/1.1 и более ранними версиями HTTP заключается в том, что постоянное подключение является поведением любого HTTP-соединения по умолчанию. То есть, если не указано иное, клиент СЛЕДУЕТ предполагать, что сервер будет поддерживать постоянное соединение даже после ответов об ошибках с сервера.