Delphi 强制Http 1.0 idHttpServer并等待时间

Delphi 强制Http 1.0 idHttpServer并等待时间,delphi,sockets,winsock,indy,Delphi,Sockets,Winsock,Indy,Delphi2010,来自Svn的最后一个Indy源代码 有人知道如何强制TIDHttpServer发送http 1.0响应,而不是发送http 1.1吗? 我希望摆脱持久连接(保持活动状态),并且我希望客户端与服务器断开连接,而不是服务器与客户端断开连接(以避免在服务器中等待时间) 一些数据: 客户端(在本例中为Internet Explorer)发出的请求: GET/HTTP/1.0 接受:/ 接受语言:pt BR 用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows N

Delphi2010,来自Svn的最后一个Indy源代码

有人知道如何强制TIDHttpServer发送http 1.0响应,而不是发送http 1.1吗? 我希望摆脱持久连接(保持活动状态),并且我希望客户端与服务器断开连接,而不是服务器与客户端断开连接(以避免在服务器中等待时间)

一些数据:

客户端(在本例中为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.1200正常
连接:关闭
内容类型:text/html;字符集=ISO-8859-1
内容长度:2717

如您所见,客户机明确地告诉服务器使用http 1.0,但indy服务器的响应是http 1.1

编辑:

我发现最好的解决方案是在OnCommandGet事件中设置:

AResponseInfo.CloseConnection:=False
AResponseInfo.Connection:=“关闭”


AResponseInfo.CloseConnection:=False使服务器不与客户端断开连接,而连接:='close'使客户端与服务器断开连接,从而避免服务器等待时间。

在IdCustomHTTPServer.pas中

版本字符串“HTTP/1.1”在
TIdHTTPResponseInfo.WriteHeader
方法中硬编码

此类没有可以重写的工厂,因此可以使用子版本更改其行为。它是在
TIdCustomHTTPServer.DoExecute

但是,由于您确实拥有源代码,因此可以将硬编码字符串更改为“HTTP/1.0”,或者根据属性设置更改其响应行为


同时设置
IdHttpServer.KeepLive:=False
会停止持久会话,但会导致服务器在请求结束时断开客户端连接。

在IdCustomHTTPServer.pas中

版本字符串“HTTP/1.1”在
TIdHTTPResponseInfo.WriteHeader
方法中硬编码

此类没有可以重写的工厂,因此可以使用子版本更改其行为。它是在
TIdCustomHTTPServer.DoExecute

但是,由于您确实拥有源代码,因此可以将硬编码字符串更改为“HTTP/1.0”,或者根据属性设置更改其响应行为


同时设置
IdHttpServer.KeepLive:=False
将停止持久会话,但它确实会导致服务器在请求结束时断开客户端的连接。

当然,仅仅更改字符串是不够的。您还必须确保该类的行为与HTTP 1.0服务器的行为相同。OK。。我发现最好的解决方案是设置:AResponseInfo.CloseConnection:=False;AResponseInfo.Connection:=“关闭”;CloseConnection使服务器不与客户端断开连接,而Connection:=“close”使客户端与服务器断开连接。但我会接受你的回答,因为这是我问的。谢谢。当然,仅仅改变字符串是不够的。您还必须确保该类的行为与HTTP 1.0服务器的行为相同。OK。。我发现最好的解决方案是设置:AResponseInfo.CloseConnection:=False;AResponseInfo.Connection:=“关闭”;CloseConnection使服务器不与客户端断开连接,而Connection:=“close”使客户端与服务器断开连接。但我会接受你的回答,因为这是我问的。谢谢