Node.js ப்ராக்ஸியில் பைனரி படப் பதில்களைப் பாதுகாக்கவும்
பைனரி உடல்களை Node முன்னோக்கு ப்ராக்ஸி வழியாக ஸ்ட்ரீம் செய்து, உரை டிகோடிங்கை வேண்டுமென்றே செய்யும் உரை மாற்றங்களுக்கு மட்டும் ஒதுக்கவும்.
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 முழு இடையகம் தேவைப்படும்போது பைனரி உள்ளடக்கத்தைப் பாதுகாக்க முடியும், ஆனால் முழு உடலையும் நினைவகத்தில் வைத்திருக்கும். கடந்து செல்லும் பட ஸ்ட்ரீமுக்கு அந்தச் செலவு தேவையில்லை.