У меня есть клиент HTTP, который устанавливает заголовок Соединения на следующее значение, когда я выполняю запрос:
Connection: close
Однако, когда сервер отправляет ответ, он устанавливает заголовок на Активный:
Connection: Keep-Alive
Это кажется интуитивно неправильным мне, и я задаюсь вопросом, как клиент должен обработать такой ответ с сервера? Также, почему сервер ответил бы Активный, когда клиент попросил соединение быть закрытым, действительно ли это допустимо?
Согласно RFC HTTP:
"HTTP/1.1 определяет "близкую" опцию соединения для отправителя, чтобы сигнализировать, что соединение будет закрыто после завершения ответа. Например,
Connection: close
или в запросе или в полях заголовка ответа указывает, что соединение НЕЛЬЗЯ считать 'персистентным' (разделите 8.1) после того, как текущий запрос/ответ завершен."
Ничего страшного. Вы говорите серверу, что не поддерживаете постоянные соединения, и он говорит вам, что поддерживает. Любая из сторон полностью допустима при закрытии соединения - это скорее сообщение о том, что обе поддерживают, а не команда ВЫ ДОЛЖНЫ ЗАКРЫТЬ ЭТО СОЕДИНЕНИЕ.
Клиент говорит я закрою соединение после завершения текущего запроса/ответа, или, другими словами, говорит, что вы не поддерживаете постоянные соединения. То есть, он не говорит серверу закрыть соединение. Сервер отвечает, что он поддерживает постоянные соединения (keep-alive).
Поскольку вы сказали серверу, что не поддерживаете постоянное соединение, вам следует закрыть соединение, когда вы прочитаете ответ.