Păstrați răspunsurile binare de imagine într-un proxy Node.js
Transmiteți corpuri binare printr-un proxy direct Node și rezervați decodarea textului pentru transformări de text deliberate.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Folosiți această cale a corpului după selectarea țintei, cererea către sursă și pregătirea stării și antetelor către client. Fluxurile Node oferă de obicei Buffer; nu le acumulați într-un șir pentru imagini sau alt conținut binar neschimbat.
pipeline coordonează contrapresiunea și propagă eșecurile. Poate distruge destinația la eroare, așa că nu presupuneți că se mai poate trimite un alt răspuns de eroare HTTP după aceea. Acest fragment nu este un server proxy complet.
Pentru octeții care trec, păstrați metadatele de reprezentare relevante, cum ar fi tipul de media și codificarea conținutului, iar câmpurile specifice fiecărui salt tratați-le prin regulile de redirecționare. O comparație între octeții gzip și antetele de răspuns corespunzătoare arată alegerea între reprezentarea codificată și cea decodificată.
Rescrierea deliberată a HTML necesită o altă cale: recunoașteți tipul de media, tratați compresia și setul de caractere, transformați textul și generați metadate pentru noii octeți. Vechiul Content-Length nu poate descrie un corp modificat.
Buffer.concat poate păstra conținut binar când este necesară tamponarea completă, dar stochează întregul corp în memorie. Un flux de imagine care trece nu are nevoie de acel cost.