2010-08-29 58 views
1

我有一个实现HTTP 1.1协议的自定义HTTP服务器。我从来没有收到IE的'Connection:Close'(我还没有测试过其他浏览器)。相反,'receive'超时,因为它似乎IE关闭了连接。未通过IE发送的HTTP头“连接:关闭”

我应该寻找什么标题来优雅地关闭连接?

+0

连接:close表示客户端不打算为后续请求重用连接。你不应该期望收到这个头。如果您不想允许保持活动状态,那么只需在响应头文件中发送Connection:close,然后在返回响应主体后关闭连接。 – EricLaw 2010-08-30 03:56:47

回答

1

当标题不存在时,1.1中“连接”标题的默认设置为“保持活动”。 IE不立即关闭连接,因此它可以为后续请求使用相同的连接,如果您没有立即发送任何请求,则会在超时后关闭连接。

+0

那么,我应该发送'100 - 继续'还是让连接超时? – 2010-08-29 15:01:15

+0

如果客户端通过'Expect:100-continue'头部明确要求,那么只能发送一个'100'回复,并且即使只是在回复待处理的请求。所以你只需要让你的连接正常超时。就像我所说的,即使IE不能立即知道连接是否会被重用,所以它不会发送HTTP 1.1请求的Connection:close头 – 2010-08-31 01:13:10

0

没有要求浏览器明确发送连接:关闭。它在60秒内超时,这在注册表中定义。

我没有看到一个问题,以优雅地处理“手动”客户端断开连接。

+1

这不是说它是一个问题,而是你说的。如果能够优雅地完成,那将会很好。如果这是不可能的,那么我想这不是问题;) – 2010-08-29 02:49:19

+0

那么,即使浏览器总是发送这个,你仍然需要处理好连接情况下的情况。 – BarsMonster 2010-08-29 03:25:20