Почему Connection: keep-alive все еще указывается в заголовках http (не устарело ли это)? - PullRequest
19 голосов
/ 12 августа 2011

Согласно «HTTP: Полное руководство», используя

Connection: keep-alive

для указания постоянного соединения устарела в HTTP / 1.1, поскольку HTTP / 1.1 указывает, что соединения являются постоянными по умолчанию и должны быть закрыты вручную путем отправки

Connection: close


Таким образом, мое простое предположение состоит в том, что «Connection: keep-alive» больше не следует использовать. Тем не менее, он все еще кажется живым и здоровым. Например, keep-alive возвращается в следующем запросе:

curl -I https://foursquare.com

HTTP/1.1 200 OK
Server: nginx/0.8.52
Date: Thu, 11 Aug 2011 21:15:45 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Expires: Thu, 11 Aug 2011 21:15:45 UTC
Set-Cookie: XSESSIONID=w19~kqtn4bpqmfq51p8qolstpk6ti;Path=/;Secure;HttpOnly
Set-Cookie: LOCATION=49.25::-123.13330078125::Hockeytown::CA;Path=/;Secure
Set-Cookie: bbhive=OQ32XATE0OQAEVCY0IVSWUDPQ1A2GT
Content-Length: 38815
Cache-Control: no-cache, private, no-store
Pragma: no-cache

Мой вопрос: Почему Connection: keep-alive все еще указывается в заголовках HTTP?

Следующий вопрос: Есть ли еще (клиенты, серверы, прокси и т. Д.), Которые все еще говорят только по HTTP / 1.0 и его вариантам, или большинство таких объектов в HTTP / 1.1 по состоянию на 2011 год?

Вот мои рабочие гипотезы:

1) HTTP / 1.0 больше не используется, б / с, который был "много лет назад"

2) Учитывая (1), keep-alive больше не следует использовать , но - это исключительно по рудиментарным причинам (то есть некоторые технологии не удосужились удалить или держите его как код вуду и т. д.)

Если (1) неверно, а HTTP / 1.0 все еще используется, тогда, вероятно, представляется целесообразным продолжать использовать keep-alive, несмотря на дополнительные вопросы по взаимодействию HTTP 1.0-1.1.

Заранее благодарим за любые идеи!

1 Ответ

14 голосов
/ 12 августа 2011

HTTP / 1.0 не имеет заголовков, таких как Connection, но существует много разных реализаций HTTP / 1.0 и HTTP / 1.1.

, поэтому Connection: keep-alive используется На всякий случай

...