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 കൈമാറ്റം തന്നെ നിയന്ത്രിക്കേണ്ടതോ മനസ്സിലാക്കേണ്ടതോ ആകുമ്പോൾ ഈ ചെറിയ കോർ ക്ലയന്റ് ഉദാഹരണം സൂക്ഷിക്കുക.