Hi!
Das Content-Management meiner Website (siehe Link) wird komplett über HTTP abgewickelt. Da wird die komplette virtuelle Verzeichnisstruktur (boot) oder Zweige davon (branching) samt Inhalt in ufz-8 in eine binäre Datenstruktur serialisiert per HTTP/POST zum Server geschickt. Der Serverprozess erzeugt aus diesem Stream einen Hash, der komplett im Hauptspeicher vorliegen muss, damit Branches in das ORM an der richtigen Stelle eingehängt werden können; in Perl ist das eine Zeile Code. Sowas geht nicht häppcheneise. Logisch auch, dass dazu die Längenangabe des Upload-Streams in Content-Length genau stimmen muss.
Du wirfst mal wieder Sachen zusammen und durcheinander. Es geht nicht um die Weiterverarbeitung sondern erst einmal nur um das Auslesen der POST-Daten. In welche Struktur du sie dann für die Weiterverarbeitung bringst, ist völlig nebensächlich für die Frage, ob man sich auf die Content-Lenght-Angabe verlassen soll und ob man sie überhaupt braucht. Die einfachste Lösung ist - egal ob der Content-Lenght-Header vom Client mitgesendet und/oder richtig ist - eine Schleife, die bis zum Datenende Häppchen liest (und diese dann in irgendeine Struktur oder auch nur aneinander in ein Byte-Array oder String oder sonstwas hängt).
Würdest Du als Programmierer dazu mit unsicheren Längenangaben arbeiten?
[x] Nein
Genau, und darum würde ich diese Content-Lenght-Angabe komplett ignorieren. Wenn ich einen Client schreiben müsste, sendete ich sie auch nur dann, wenn ein (Fremd-)Server ohne sie nicht mitspielt oder die Zielserver unbekannt sind (z.B. wenn sie zur Entwurfszeit nicht feststehen).
Lo!