Zachovejte bajty binárního souboru při nahrávání přes proxy
Zachovejte bajty souboru a délky v bajtech při nahrávání přes proxy, místo abyste artefakt dekódovali jako text a znovu jej sestavovali v ASCII.
Binární soubor by měl dorazit do HTTP klienta jako bajty. Čtení textovým čtečkou a opětovné kódování výsledného řetězce jako ASCII může nahradit hodnoty dříve, než proxy cokoli přijme. To, že malý textový vzorek funguje, nečiní tuto cestu bezpečnou pro obrázek, archiv nebo dokument.
V existující nahrávací cestě .NET nahraďte tento převod binárním zdrojem těla:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);Předejte obsah přes nakonfigurované HTTP nahrávání aplikace; fragment zavádí zdroj těla, zatímco stávající klient stále vlastní metodu, cíl, proxy a správu životnosti.
Odstraňte jakýkoli Content-Length vypočtený z počtu znaků starého řetězce. Toto pole měří oktety. Nechte HTTP knihovnu sestavit rámování z reprezentace těla místo spojování počtu znaků s jinak kódovaným bufferem.
Pro záměrné textové nahrávání zvolte kódování explicitně a odvoďte požadovanou délku z odeslaných bajtů. Toto rozhodnutí o textovém formátu by se nemělo uplatňovat na libovolné soubory.
Porovnejte přenesený artefakt s důvěryhodnou očekávanou hodnotou. Úspěch HTTP potvrzuje, že operace nahrávání byla v této vrstvě dokončena; nemůže ukázat, že předchozí textový převod zachoval původní bajty.