Сачувајте бинарне одговоре слика у Node.js проксију
Прослеђујте бинарна тела кроз Node forward прокси и чувајте декодирање текста за намерне текстуалне трансформације.
const { pipeline } = require('node:stream');
pipeline(upstreamResponse, clientResponse, (error) => {
if (error) console.error('Proxy response failed:', error);
});
Користите ову путању тела након избора циља, захтева према извору и припреме статуса и заглавља према клијенту. Node токови обично дају Buffer објекте; немојте их скупљати у стринг за слике или други непромењени бинарни садржај.
pipeline координира повратни притисак и шири грешке. У случају грешке може уништити одредиште, па немојте претпоставити да се након тога може послати још један HTTP одговор са грешком. Овај уломак није потпуни прокси сервер.
За пропуштене бајтове сачувајте релевантне метаподатке репрезентације, попут врсте медија и кодирања садржаја, а поља специфична за поједини скок обрадите правилима прослеђивања. Поређење gzip бајтова и одговарајућих заглавља одговора показује избор између кодиране и декодиране репрезентације.
Намерно преписивање HTML-а захтева другу путању: препознајте врсту медија, обрадите компресију и скуп знакова, трансформишите текст и генеришите метаподатке за нове бајтове. Стари Content-Length не може описати промењено тело.
Buffer.concat може сачувати бинарни садржај када је потребно потпуно баферирање, али чува цело тело у меморији. Пропуштени ток слике не треба тај трошак.