Delphi w Indy 10: idHTTPRequest POST всегда является HTTP 1.0, как сделать его HTTP 1.1?

мы делаем запросы POST к веб-службе.

работает нормально.

однако мы замечаем, что запросы всегда HTTP 1.0, что заставляет наш веб-сервер отклонять gzip ответы.

Если запросы HTTP 1.1, то ответы gzipped.

Как мы правильно просим Indy 10 выдавать запросы HTTP 1.1 POST?

спасибо!

1 ответов


включить на HTTPOptions набор свойств (установите его в True). Кроме того, что держать ProtocolVersion свойство имеет значение pv1_1 (значение по умолчанию).

на TIdCustomHTTP.Post код метода есть комментарий, объясняющий текущее поведение:

в настоящее время при выдаче поста IdHTTP автоматически устанавливает протокол к версии 1.0 независимо от значения, которое он имел изначально. Это потому, что есть некоторые серверы, которые не уважайте RFC полная мера. В частности, они не уважают отправку / не отправку Expect: 100-ПРОДОЛЖИТЬ заголовок. Пока не найдем оптимальное решение это не нарушает RFC, мы ограничим сообщения версией 1.0.

несколько строк ниже изменения в версии 1.0 со следующим комментарием:

// If hoKeepOrigProtocol is SET, it is possible to assume that the developer
// is sure in operations of the server
if not (hoKeepOrigProtocol in FOptions) then begin
  if Connected then begin
    Disconnect;
  end;
  FProtocolVersion := pv1_0;
end;

и приведенный выше код пропускается (версия не изменилась), если у вас есть входит в HTTPOptions.