【问题标题】:Why is Connection: keep-alive still being specified in http headers (isn't it deprecated)?为什么 Connection: keep-alive 仍然在 http 标头中指定(不是已弃用)?
【发布时间】:2011-10-25 09:01: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。

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

【问题讨论】:

  • 这是一个错误的假设:“HTTP/1.0 不再使用。”世界上有相当数量的仅支持 HTTP/1.0 的垃圾代理服务器。但是,是的,我相信它的存在主要是因为它是伏都教。
  • 谢谢。事实上,我刚刚找到了您的相关答案:stackoverflow.com/questions/6257470/…随时将您的评论升级为完整答案!

标签: http keep-alive http-1.1 http-1.0


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2012-09-15
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多