Zachovajte bajty binárneho súboru pri nahrávaní cez proxy
Zachovajte bajty súboru a dĺžky v bajtoch pri nahrávaní cez proxy namiesto dekódovania artefaktu ako textu a jeho opätovného zostavenia v ASCII.
Binárny súbor by sa mal do HTTP klienta dostať ako bajty. Čítanie textovým čítačom a opätovné zakódovanie výsledného reťazca ako ASCII môže nahradiť hodnoty ešte predtým, než proxy čokoľvek prijme. To, že malá textová ukážka funguje, nerobí túto cestu bezpečnou pre obrázok, archív alebo dokument.
V existujúcej ceste nahrávania .NET nahraďte túto konverziu binárnym zdrojom tela:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);
Prežeňte obsah cez nakonfigurované HTTP nahrávanie aplikácie; fragment ustanoví zdroj tela, zatiaľ čo existujúci klient stále vlastní metódu, cieľ, proxy a správu životnosti.
Odstráňte akýkoľvek Content-Length vypočítaný z počtu znakov starého reťazca. Toto pole meria oktety. Nechajte HTTP knižnicu zostaviť rámcovanie z reprezentácie tela namiesto spájania počtu znakov s inak zakódovaným bufferom.
Pri zámernom textovom nahrávaní vyberte kódovanie explicitne a požadovanú dĺžku odvodite z odoslaných bajtov. Toto rozhodnutie o textovom formáte by sa nemalo uplatňovať na ľubovoľné súbory.
Porovnajte prenesený artefakt s dôveryhodnou očakávanou hodnotou. Úspech HTTP potvrdzuje, že operácia nahrávania sa na tejto vrstve dokončila; nemôže ukázať, že predchádzajúca textová konverzia zachovala pôvodné bajty.