19

根据“HTTP:权威指南”,使用

Connection: keep-alive

指定持久连接在 HTTP/1.1 中已弃用,因为 HTTP/1.1 指定默认连接是持久的,必须通过发送手动关闭

Connection: close


因此,我的简单假设是“连接:保持活动”不应该再使用了。然而,它似乎仍然活得很好。例如,在以下查询中返回 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

我的问题是:为什么仍然在 HTTP 标头中指定 Connection: keep-alive?

一个必然的问题是:截至 2011 年,是否仍有(客户端、服务器、代理等)仍然只使用 HTTP/1.0 及其变体,或者大多数此类实体在 HTTP/1.1 上?

以下是我的工作假设:

1) HTTP/1.0 不再使用,b/c 那是“很多年前”

2)鉴于(1),不应该再使用keep-alive,但这纯粹出于退化的原因(也就是说,某些技术没有费心将其删除,或者将其保留为巫毒代码等)

如果 (1) 不正确,并且 HTTP/1.0 仍在使用中,那么尽管有关于 HTTP 1.0-1.1 互操作的后续问题,但继续使用 keep-alive 似乎是合理的。

提前感谢您分享的任何见解!

4

1 回答 1

14

HTTP/1.0 没有类似的标头Connection,但是 HTTP/1.0 和 HTTP/1.1 有许多不同的实现。

所以Connection: keep-alive使用'以防万一'

于 2011-08-12T09:22:16.510 回答