【发布时间】:2011-02-22 18:55:04
【问题描述】:
Delphi 2010,来自 Svn 的 Last Indy 源代码。
有谁知道如何强制 TIDHttpServer 发送 http 1.0 响应,而不是发送 http 1.1? 我想摆脱持久连接(保持活动状态),并且我希望客户端与我的服务器断开连接,而不是我的服务器与客户端断开连接(以避免在我的服务器中出现 TIME_WAIT)。
一些数据:
客户端(在本例中为 Internet Explorer)发出的请求:
GET / HTTP/1.0
接受:/
接受语言:pt-BR
用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0 ; InfoPath.3; .NET4.0C; .NET4.0E)
主机:本地主机:114
连接:保持活动状态
来自我的 Indy 服务器的响应:
HTTP/1.1 200 正常
连接:关闭
内容类型:文本/html;字符集=ISO-8859-1
内容长度:2717
如您所见,客户端明确告诉服务器使用 http 1.0,但 indy 服务器响应是 http 1.1。
编辑:
我发现最好的解决方案是在 OnCommandGet 事件中设置:
AResponseInfo.CloseConnection := False;
AResponseInfo.Connection := '关闭';
AResponseInfo.CloseConnection := False 使服务器不与客户端断开连接,而 Connection := 'close' 使客户端与服务器断开连接,避免服务器 TIME_WAIT。
【问题讨论】:
标签: delphi sockets winsock indy