根据“HTTP:The Definitive Guide”,使用
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?
一个必然的问题是:是否还有(客户端,服务器,代理等)仍然只会说HTTP / 1.0及其变体,或者截至2011年是HTTP / 1.1上的大多数此类实体?
以下是我的工作假设:
1)HTTP / 1.0不再使用,b / c是“很多年前”
2)给定(1),keep-alive 不应该再次使用,但 纯粹是出于遗传原因(也就是说,某些技术没有受到打扰)删除它,或保持它作为伏都教代码等。)
如果(1)不正确,并且HTTP / 1.0仍在使用中,那么尽管HTTP 1.0-1.1互操作上有后续问题,但确保使用keep-alive似乎是合理的。
提前感谢您分享的任何见解!
答案 0 :(得分:14)
HTTP / 1.0没有像Connection
那样的标题,但HTTP / 1.0和HTTP / 1.1有很多不同的实现。
所以Connection: keep-alive
使用'以防万一'