Sačuvajte bajtove binarne datoteke pri prijenosu kroz proxy
Sačuvajte bajtove datoteke i duljine u bajtovima pri prijenosu kroz proxy, umjesto da artefakt dekodirate kao tekst i ponovno ga izgradite ASCII-jem.
Binarna datoteka trebala bi stići do HTTP klijenta kao bajtovi. Čitanje tekstualnim čitačem i ponovno kodiranje dobivenog niza u ASCII može zamijeniti vrijednosti prije nego proxy išta primi. To što mali tekstualni uzorak radi ne čini taj put sigurnim za sliku, arhivu ili dokument.
U postojećem .NET putu prijenosa zamijenite tu pretvorbu binarnim izvorom tijela:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);Proslijedite sadržaj kroz konfigurirani HTTP prijenos aplikacije; ulomak uspostavlja izvor tijela, dok postojeći klijent i dalje upravlja metodom, odredištem, proxyjem i trajanjem.
Uklonite svaki Content-Length izračunat iz broja znakova starog niza. To polje mjeri oktete. Pustite HTTP biblioteku da izgradi okvir iz prikaza tijela umjesto da uparuje broj znakova s drukčije kodiranim međuspremnikom.
Za namjeran tekstualni prijenos eksplicitno odaberite kodiranje i izvedite potrebnu duljinu iz poslanih bajtova. Ta odluka o tekstualnom formatu ne bi se trebala primjenjivati na proizvoljne datoteke.
Usporedite preneseni artefakt s pouzdanom očekivanom vrijednošću. HTTP uspjeh potvrđuje da je operacija prijenosa dovršena na tom sloju; ne može pokazati da je prethodna tekstualna pretvorba sačuvala izvorne bajtove.