Node HTTP ကို proxy မှတစ်ဆင့် ပို့ပေးသော တောင်းဆိုမှုလိုင်း
ချိတ်ဆက်မှု အဆုံးမှတ်၊ ပကတိ ပစ်မှတ်နှင့် Host ခေါင်းစီးတို့ကို ခွဲခြားပြီး Node ၏ ပင်မကလိုင်းယင့်ဖြင့် ရိုးရှင်းသော HTTP proxy တောင်းဆိုမှု တည်ဆောက်ပါ။
ရှေ့သို့ပို့ proxy မှတစ်ဆင့် သာမန် HTTP တောင်းဆိုမှုတွင် Node သည် proxy သို့ ချိတ်ဆက်ပြီး ဦးတည်ရာ 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 proxy စာရင်းမှ ကိုယ်စားလှယ်တစ်ခုကို ရွေးပြီး ၎င်း၏ တုံ့ပြန်မှုကို စစ်ဆေးပါ။ ဥပမာသည် အခြေအနေကို ပရင့်ထုတ်ပြီးနောက် တုံ့ပြန်မှုကို စွန့်ပစ်သည်။ အပလီကေးရှင်းက ယင်းအစား ကိုယ်ထည်ကို သုံးနိုင်သည်။ မေးခွန်းသည် တောင်းဆိုမှု ပစ်မှတ်၏ အစိတ်အပိုင်းအဖြစ် ကျန်ရှိသည်။
အပြည့်အစုံ URL သည် အဘယ်ကြောင့် ထိုနေရာတွင် ရှိသည်
မူလဆာဗာသည် များသောအားဖြင့် /news?q=proxy ကဲ့သို့ ပစ်မှတ်ကို လက်ခံသည်။ ရှေ့သို့ပို့ proxy သည်လည်း ဦးတည်ရာကို လိုအပ်သဖြင့် HTTP/1.1 သည် ပစ်မှတ်ကို ပကတိပုံစံဖြင့် သတ်မှတ်သည်။
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
HTTP/1.1 စည်းမျဉ်းများအရ ပကတိပုံစံကို လက်ခံသော proxy သည် ပို့ဆောင်စဉ် URI ၏ အခွင့်အာဏာကို သုံးပြီး မကိုက်ညီသော လက်ခံရရှိ Host အကွက်ကို အစားထိုးသည်။ ကိုက်ညီသော ဦးတည်ရာ Host ခေါင်းစီးကို ပို့ခြင်းက ထွက်သွားသော တောင်းဆိုမှုကို မရှင်းမလင်းဖြစ်မနေစေရန် ထိန်းထားသည်။ Node ၏ ချိတ်ဆက်မှု hostname သည် ကြားခံဖြစ်သဖြင့် ထို ချိတ်ဆက်မှု လိပ်စာအပေါ် မှီခိုမည့်အစား ခေါင်းစီးကို တမင်တကာ သတ်မှတ်ပါ။
အထောက်အထား လိုအပ်ပါက proxy ၏ အထောက်အထားများသည် ၎င်း၏ hop နှင့် သက်ဆိုင်သည်။ Node ၏ auth တောင်းဆိုမှု ရွေးချယ်မှုသည် အရင်းအမြစ်အတွက် Authorization ခေါင်းစီးကို ဖန်တီးသည်။ ၎င်းသည် ယေဘုယျ proxy ဝင်ရောက်မှု ရွေးချယ်မှု မဟုတ်ပါ။ ဖလှယ်မှု ပိုရှုပ်ထွေးလျှင် proxy လိုအပ်သော scheme နှင့် သင့်လျော်သော proxy ကလိုင်းယင့်ကို သုံးပါ။
HTTPS သည် ဥမင်လိုဏ်ခေါင်း ထပ်တိုးသည်
ဤဥပမာသည် ရိုးရှင်းသော HTTP ပို့ဆောင်မှုကို ဖုံးလွှမ်းသည်။ ပုံမှန် HTTP proxy မှတစ်ဆင့် HTTPS ချိတ်ဆက်မှုသည် ဦးစွာ CONNECT example.com:443 ကို တောင်းပြီး လက်ခံထားသော ဥမင်အတွင်း ဦးတည်ရာသို့ TLS စတင်သည်။ ဥပမာ URL ကို HTTPS သို့ ပြောင်းခြင်းက ထို အဆင့်များကို ထပ်မထည့်ပါ။
HTTPS သို့မဟုတ် ရောထွေးသော အလုပ်တာဝန်အတွက် လိုအပ်သော ဥမင် ပံ့ပိုးမှုရှိသော ထိန်းသိမ်းထားသည့် proxy ကိုယ်စားလှယ် သို့မဟုတ် ပို့သူကို သုံးပါ။ ကိုက်ညီသော Node ဗားရှင်းများအတွက် ရွေးချယ်မှုတစ်ခုမှာ ProxyAgent ဖြင့် Undici ၏ fetch ဖြစ်သည်။ ရိုးရှင်းသော HTTP ဖလှယ်မှုကို ကိုယ်တိုင် ထိန်းချုပ်ရန် သို့မဟုတ် နားလည်ရန် လိုအပ်သည့်အခါ ဤ သေးငယ်သော ပင်မကလိုင်းယင့် ဥပမာကို ထားရှိပါ။