Conserva i byte di un file binario durante il caricamento tramite proxy
Conserva i byte e le lunghezze in byte del file durante il caricamento tramite proxy, invece di decodificare l'artefatto come testo e ricostruirlo con ASCII.
Un file binario dovrebbe arrivare al client HTTP come byte. Leggerlo con un lettore di testo e ricodificare la stringa risultante come ASCII può sostituire valori prima che il proxy riceva qualcosa. Il fatto che un piccolo campione di testo funzioni non rende quel percorso sicuro per un'immagine, un archivio o un documento.
In un percorso di caricamento .NET esistente, sostituisci quella conversione con un'origine del corpo binaria:
using var file = File.OpenRead(path);
using var content = new StreamContent(file);Passa il contenuto attraverso il caricamento HTTP configurato dell'applicazione; il frammento stabilisce l'origine del corpo, mentre il client esistente gestisce ancora metodo, destinazione, proxy e ciclo di vita.
Rimuovi qualsiasi Content-Length calcolato dal conteggio dei caratteri della vecchia stringa. Il campo misura ottetti. Lascia che la libreria HTTP costruisca l'inquadratura dalla rappresentazione del corpo invece di accoppiare un conteggio di caratteri a un buffer codificato diversamente.
Per un caricamento testuale intenzionale, scegli esplicitamente la codifica e ricava qualsiasi lunghezza necessaria dai byte inviati. Quella decisione sul formato testuale non dovrebbe essere applicata a file arbitrari.
Confronta l'artefatto trasferito con un valore atteso affidabile. Il successo HTTP conferma che un'operazione di caricamento è stata completata a quel livello; non può dimostrare che una precedente conversione testuale abbia preservato i byte originali.