Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Indy TIdHTTP mit SSL und GZip

  Alt 28. Sep 2018, 09:10
Moin!

Ich bekomme einfach die Kombination HTTPS+GZip Encoding nicht zum Laufen. Zum Testen habe ich eine ganz simple Anwendung zusammengeklickt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if IdHTTP1.Compressor.IsReady then begin
    IdHTTP1.Get('https://www.google.de/');
  end else begin
    ShowMessage('ZLib nicht bereit');
  end;
end;
DFM:
Delphi-Quellcode:
  object IdHTTP1: TIdHTTP
    IOHandler = IdSSLIOHandlerSocketOpenSSL1
    AllowCookies = True
    ProxyParams.BasicAuthentication = False
    ProxyParams.ProxyPort = 0
    Request.ContentLength = -1
    Request.ContentRangeEnd = -1
    Request.ContentRangeStart = -1
    Request.ContentRangeInstanceLength = -1
    Request.Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
    Request.BasicAuthentication = False
    Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)'
    Request.Ranges.Units = 'bytes'
    Request.Ranges = <>
    HTTPOptions = [hoForceEncodeParams]
    Compressor = IdCompressorZLib1
    Left = 668
    Top = 225
  end
  object IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL
    MaxLineAction = maException
    Port = 0
    DefaultPort = 0
    SSLOptions.Method = sslvTLSv1_2
    SSLOptions.SSLVersions = [sslvTLSv1_2]
    SSLOptions.Mode = sslmUnassigned
    SSLOptions.VerifyMode = []
    SSLOptions.VerifyDepth = 0
    Left = 676
    Top = 289
  end
  object IdCompressorZLib1: TIdCompressorZLib
    Left = 772
    Top = 265
  end
Schaue ich mir den Request dann im Wireshark an (siehe Bild unten), funktioniert zwar TLS 1.2 ganz wunderbar, allerdings wird schon im Client Hello keinerlei Compression Method angefragt. Entsprechend ist es dem Server auch völlig Wumpe und antwortet unkomprimiert.

Die ZLib ist offensichtlich geladen, sonst würde der Request gar nicht abgesetzt. Ich habe auch schon versucht, in den RequestParams.AcceptEncoding := 'gzip, deflate' zu setzen. In manchen Tutorials heißt es, man soll das explizit setzen, in anderen Tutorials wiederum heißt es gerade NICHT setzen. Es geht aber weder MIT noch OHNE AcceptEncoding.

Grüße
Cody
Miniaturansicht angehängter Grafiken
image1.jpg  
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat