Sačuvajte binarne odgovore slika u Node.js proxyju
Prosljeđujte binarna tijela kroz Node forward proxy i čuvajte dekodiranje teksta za namjerne tekstualne transformacije.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Koristite ovu putanju tijela nakon odabira cilja, zahtjeva prema izvoru te pripreme statusa i zaglavlja prema klijentu. Node tokovi obično daju Buffer objekte; nemojte ih skupljati u string za slike ili drugi nepromijenjeni binarni sadržaj.
pipeline koordinira povratni pritisak i širi pogreške. U slučaju pogreške može uništiti odredište, pa nemojte pretpostaviti da se nakon toga može poslati još jedan HTTP odgovor s pogreškom. Ovaj ulomak nije potpuni proxy poslužitelj.
Za propuštene bajtove sačuvajte relevantne metapodatke reprezentacije, poput vrste medija i kodiranja sadržaja, a polja specifična za pojedini skok obradite pravilima prosljeđivanja. Usporedba gzip bajtova i odgovarajućih zaglavlja odgovora pokazuje izbor između kodirane i dekodirane reprezentacije.
Namjerno prepisivanje HTML-a zahtijeva drugu putanju: prepoznajte vrstu medija, obradite kompresiju i skup znakova, transformirajte tekst i generirajte metapodatke za nove bajtove. Stari Content-Length ne može opisati promijenjeno tijelo.
Buffer.concat može sačuvati binarni sadržaj kada je potrebno potpuno baferiranje, ali pohranjuje cijelo tijelo u memoriji. Propušteni tok slike ne treba taj trošak.