Должен ли сервер придерживаться HTTP-соединения: закрыть заголовок, отправленный клиентом? - PullRequest
8 голосов
/ 06 августа 2010

У меня есть HTTP-клиент, который задает в заголовке соединения следующее значение при выполнении запроса:

   Connection: close

Однако, когда сервер отправляет ответ, он устанавливает заголовок Keep-Alive:

   Connection: Keep-Alive

Это кажется мне интуитивно неправильным, и мне интересно, как клиент должен обрабатывать такой ответ от сервера? Кроме того, почему сервер отвечает сообщением Keep-Alive, когда клиент запрашивает закрытие соединения, действительно ли это допустимо?

Согласно HTTP RFC:

«HTTP / 1.1 определяет опцию« закрыть »соединение для отправителя, чтобы сигнализировать, что соединение будет закрыто после завершения ответа. Например,

   Connection: close

в полях заголовка запроса или ответа указывает, что соединение НЕ ДОЛЖНО считаться постоянным (раздел 8.1) после завершения текущего запроса / ответа. "

Ответы [ 2 ]

13 голосов
/ 06 августа 2010

Отлично.Вы говорите серверу, что не поддерживаете постоянные соединения, и он говорит вам, что поддерживает.Любая из сторон полностью закрывает соединение - это скорее сообщение о том, что оба поддерживают, а не команда ВЫ ДОЛЖНЫ ЗАКРЫТЬ ЭТО СОЕДИНЕНИЕ.

6 голосов
/ 06 августа 2010

Клиент говорит, что I закроет соединение, когда текущий запрос / ответ будет завершен, или, другими словами, если вы не поддерживаете постоянные соединения. То есть он не говорит серверу закрыть соединение. Сервер отвечает, что поддерживает постоянные соединения (keep-alive).

Поскольку вы сказали серверу, что не поддерживает постоянное соединение, вы должны закрыть соединение, когда прочитаете ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...