Node HTTP ను ప్రాక్సీ ద్వారా మళ్లించే అభ్యర్థన పంక్తి
కనెక్షన్ ఎండ్పాయింట్, సంపూర్ణ లక్ష్యం మరియు Host హెడర్ను వేరు చేసి Node యొక్క ప్రధాన క్లయింట్తో సాధారణ HTTP ప్రాక్సీ అభ్యర్థనను నిర్మించండి.
ఫార్వర్డ్ ప్రాక్సీ ద్వారా వెళ్లే సాధారణ 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 మార్పిడి దానంతటదే మీరు నియంత్రించాల్సిన లేదా అర్థం చేసుకోవాల్సిన విషయమైనప్పుడు ఈ చిన్న ప్రధాన-క్లయింట్ ఉదాహరణను ఉంచండి.