В чем разница между соединением и прокси-соединением в 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, клиенты, использующие их, должны будут отслеживать соединение на предмет "зависших" запросов (которые указывают, что клиент должен прекратить отправку поля заголовка), и этот механизм не должен использоваться клиентами на все, когда используется прокси.