Delphi 2010, исходный код Last Indy от Svn.
Кто-нибудь знает, как заставить TIDHttpServer отправлять ответ http 1.0 вместо отправки http 1.1? Я хочу избавиться от постоянных подключений (поддерживать активность), а также хочу, чтобы клиент отключался от моего сервера, а не мой сервер отключался от клиента (чтобы избежать TIME_WAIT на моем сервере).
Некоторые данные:
Запрос, сделанный клиентом (в данном случае Internet Explorer):
GET / HTTP/1.0
Accept: /
Accept-Language: pt-BR
User-Agent: 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)< br> Хост: localhost:114
Соединение: Keep-Alive
Ответ моего сервера Indy:
HTTP/1.1 200 ОК
Соединение: закрыть
Content-Type: text/html; charset=ISO-8859-1
Длина содержимого: 2717
Как вы можете видеть, клиент явно сказал серверу использовать http 1.0, но ответ индийного сервера был http 1.1.
ИЗМЕНИТЬ:
Я понял, что лучшее решение — установить в событии OnCommandGet:
AResponseInfo.CloseConnection := False;
AResponseInfo.Connection := 'close';
AResponseInfo.CloseConnection := False заставляет сервер не отключаться от клиента, а Connection := 'close' заставляет клиента отключаться от сервера, избегая серверов TIME_WAIT.