В чем разница между соединением и прокси-соединением в HTTP-заголовке?

В чем разница между Connection и Proxy-Connection в заголовке HTTP?

Поле Proxy-Connection добавлено прокси-сервером? Или клиент и сервер? Что сделают прокси, клиент или сервер после получения заголовка с этими двумя полями со значением keep-alive и close соответственно?

Ответ 1

Заголовок Connection - это стандартный заголовок, определенный в спецификациях HTTP 1.0 и 1.1 (RFC 2068 и RFC 2616) для поддержания поведения keep-alive в HTTP-соединении.

Proxy-Connection был экспериментальным заголовком, созданным разработчиками Netscape, чтобы делать подобные вещи из-за непонимания о том, когда заголовок Connection можно использовать. Он никогда не работал должным образом и игнорируется многими распространенными системами HTTP, существующими сегодня. Когда он работает как разработанный, между ними нет никакой разницы.

Ответ 2

Цитируется по адресу https://tools.ietf.org/html/rfc7230#appendix-A.1.2

В HTTP/1.0 каждое соединение устанавливается клиентом до запроса и закрывается сервером после отправки ответа. Однако в некоторых реализациях реализована явно согласованная ("поддерживающая жизнь") версия постоянных соединений, описанная в разделе 19.7.1 [RFC2068].

Некоторые клиенты и серверы могут захотеть быть совместимыми с этими предыдущими подходами к постоянным соединениям, явно договариваясь о них с полем заголовка запроса "Connection: keep-alive". Однако некоторые экспериментальные реализации постоянных соединений HTTP/1.0 являются ошибочными; например, если прокси-сервер HTTP/1.0 не понимает Connection, он ошибочно перенаправит это поле заголовка на следующий входящий сервер, что приведет к зависанию соединения.

Одним из попыток было введение поля заголовка Proxy-Connection, предназначенного специально для прокси. На практике это также было неосуществимо, поскольку прокси-серверы часто развертываются на нескольких уровнях, что приводит к той же проблеме, что обсуждалась выше.

В результате клиентам рекомендуется не отправлять поле заголовка Proxy-Connection ни в каких запросах.

Клиентам также рекомендуется рассмотреть возможность использования Connection: внимательно следить за запросами; хотя они могут разрешать постоянные соединения с серверами HTTP/1.0, клиенты, использующие их, должны будут отслеживать соединение на предмет "зависших" запросов (которые указывают, что клиент должен прекратить отправку поля заголовка), и этот механизм не должен использоваться клиентами на все, когда используется прокси.