किसी फ़ॉरवर्ड प्रॉक्सी से होकर जाने वाले सामान्य HTTP अनुरोध में Node प्रॉक्सी से जुड़ता है और गंतव्य URL को अनुरोध पंक्ति में भेजता है। तीन मान उस एक अनुरोध का वर्णन करते हैं:

मानउदाहरण
TCP कनेक्शन एंडपॉइंटproxy.example:8080
अनुरोध लक्ष्यhttp://example.com/news?q=proxy
Host हेडरexample.com

यह Node 22 उदाहरण इस अलगाव को स्पष्ट करता है:

const http = require('node:http');
const destination = new URL('http://example.com/news?q=proxy');

const request = http.get({
  hostname: 'proxy.example',
  port: 8080,
  path: destination.href,
  headers: { Host: destination.host },
  signal: AbortSignal.timeout(15000),
}, (response) => {
  console.log(response.statusCode);
  response.on('error', console.error);
  response.resume();
});
request.on('error', console.error);

एंडपॉइंट एक प्लेसहोल्डर है; सार्वजनिक HTTP परीक्षण के लिए HTTP प्रॉक्सी सूची से कोई उम्मीदवार चुनें और उसका प्रतिक्रिया जाँचें। उदाहरण स्थिति प्रिंट करने के बाद प्रतिक्रिया को खाली कर देता है; कोई एप्लिकेशन इसके बजाय बॉडी का उपभोग कर सकता है। क्वेरी अनुरोध लक्ष्य का हिस्सा बनी रहती है।

पूरा URL वहाँ क्यों जाता है

मूल सर्वर को सामान्यतः /news?q=proxy जैसा लक्ष्य मिलता है। फ़ॉरवर्ड प्रॉक्सी को गंतव्य की भी आवश्यकता होती है, इसलिए HTTP/1.1 लक्ष्य को निरपेक्ष रूप में परिभाषित करता है:

GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com

HTTP/1.1 के नियमों के अनुसार, निरपेक्ष रूप प्राप्त करने वाली प्रॉक्सी अग्रेषण करते समय URI के प्राधिकार का उपयोग करती है और असंगत प्राप्त Host फ़ील्ड को बदल देती है। सुसंगत गंतव्य Host हेडर भेजना फिर भी बाहर जाने वाले अनुरोध को स्पष्ट रखता है। Node का कनेक्शन होस्टनाम मध्यस्थ है, इसलिए उस कनेक्शन पते पर भरोसा करने के बजाय हेडर जानबूझकर सेट करें।

यदि प्रमाणीकरण आवश्यक हो, तो प्रॉक्सी के क्रेडेंशियल उसके अपने हॉप के होते हैं। Node का auth अनुरोध विकल्प संसाधन के लिए Authorization हेडर बनाता है; यह सामान्य प्रॉक्सी-लॉगिन विकल्प नहीं है। जब आदान-प्रदान अधिक जटिल हो, तो प्रॉक्सी द्वारा आवश्यक स्कीम और उपयुक्त प्रॉक्सी क्लाइंट का उपयोग करें।

HTTPS एक सुरंग जोड़ता है

यह उदाहरण सादे HTTP अग्रेषण को कवर करता है। सामान्य HTTP प्रॉक्सी से होकर HTTPS कनेक्शन पहले CONNECT example.com:443 का अनुरोध करता है, फिर स्वीकृत सुरंग के भीतर गंतव्य तक TLS शुरू करता है। उदाहरण का URL HTTPS में बदलने से वे चरण नहीं जुड़ते।

HTTPS या मिश्रित कार्यभार के लिए आवश्यक सुरंग समर्थन वाला अनुरक्षित प्रॉक्सी एजेंट या डिस्पैचर उपयोग करें। संगत Node संस्करणों के लिए एक विकल्प ProxyAgent के साथ Undici का fetch है। यह छोटा मूल-क्लाइंट उदाहरण उन स्थितियों के लिए रखें जहाँ सादा HTTP आदान-प्रदान ही वह चीज़ है जिसे आपको नियंत्रित या समझना है।

संबंधित लेख