Wenn eine angebliche PDF- oder Tabellendatei mit HTTP/1.1 200 OK beginnt, hat der Downloader eine Rohantwort statt der Datei gespeichert. Diese schematische Antwort enthält nur vier Bytes Inhalt:

HTTP/1.1 200 OK
Transfer-Encoding: chunked

4
DATA
0

Die Datei ist DATA. Statuszeile, Header, Größenmarker und abschließende Struktur gehören zu HTTP. Eine feste Byteanzahl zu entfernen ist unsicher, weil Headerlängen variieren. Alles nach der ersten Leerzeile zu kopieren, lässt die Chunk-Rahmung stehen, und informative Antworten können der endgültigen Antwort vorausgehen.

Ersetzen Sie bei einem normalen Download das Kopieren vom Roh-Socket in die Datei durch die Antwortkörper-Schnittstelle des HTTP-Clients. Konfigurieren Sie dessen Proxy, validieren Sie den endgültigen Status und streamen Sie den Körper in eine temporäre Ausgabe. Der Client übernimmt die Nachrichtenrahmung: längenkodierte, chunked und verbindungsbegrenzte Körper erfordern unterschiedliche Verarbeitung.

Die Inhaltskodierung ist eine weitere Ebene. Entscheiden Sie anhand des dokumentierten Client-Verhaltens, ob Sie dekodierte Dateibytes oder ausdrücklich angeforderten Rohinhalt brauchen. Komprimierte Bytes sind nicht automatisch Proxy-Korruption.

Muss die Anwendung Code auf Socket-Ebene behalten, besitzt sie alle diese Parsingregeln sowie die Lese- und Schreibbehandlung. Schreiben Sie nur die Anzahl der tatsächlich von einem Lesevorgang zurückgegebenen Bytes, nicht die Pufferkapazität, und behandeln Sie Teilschreibvorgänge. Sonst kann veralteter Pufferinhalt selbst einen korrekt extrahierten Körper beschädigen.

HTTPS erfordert mehr als das Entfernen einer CONNECT-Antwort: nach erfolgreichem Tunnelaufbau stellen Sie TLS zum Ziel her und parsen dann die innere HTTP-Antwort. Die verschlüsselten Bytes nach den Proxy-Headern sind nicht die herunterladbare Datei.

Lassen Sie fehlgeschlagene oder unvollständige Ausgaben unter einem temporären Namen. Veröffentlichen Sie sie erst, wenn Übertragung und Dateiprüfungen erfolgreich sind; eine nicht leere Datei belegt keinen vollständigen Download.

Ähnliche Artikel