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
.