Go ၏ CONNECT ခေါင်းစီးများကို Transport ပေါ်တွင် ထားပါ
CONNECT ကာလအတွင်း လိုအပ်သော ခေါင်းစီးကို ဦးတည်ရာ တောင်းဆိုချက်ပေါ်တွင် မထားဘဲ HTTP proxy သို့ ပို့ပါ။
http.Request.Header သို့ ထည့်သော ခေါင်းစီးသည် ဦးတည်ရာ တောင်းဆိုချက်ကို ဖော်ပြသည်။ HTTPS သည် HTTP proxy ကို အသုံးပြုသောအခါ transport သည် ဦးစွာ CONNECT ကို လုပ်ဆောင်သည်။ ဦးတည်ရာ တောင်းဆိုချက်၏ ခေါင်းစီးများသည် ထိုအစောပိုင်း ဖလှယ်မှုအတွက် ယေဘုယျ ဖွဲ့စည်းမှု API မဟုတ်ပါ။
သင့် proxy က လိုအပ်သော တည်ငြိမ်ခေါင်းစီးအတွက် transport ၏ ProxyConnectHeader ကို ဖွဲ့စည်းပါ:
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
ProxyConnectHeader: http.Header{
"X-Proxy-Account": []string{"example-account"},
},
}ဤနေရာတွင် proxyURL သည် ခွဲခြမ်းစိတ်ဖြာပြီးသော endpoint URL ဖြစ်သည်။ ခေါင်းစီးသည် ဥပမာသာဖြစ်ပြီး proxy အော်ပရေတာက ထိုသို့သော အကွက်ကို သတ်မှတ်မှသာ အသုံးဝင်သည်။
proxy တစ်ခုစီ သို့မဟုတ် ဦးတည်ရာအလိုက် ရွေးချယ်သော တန်ဖိုးအတွက် GetProxyConnectHeader ကို အသုံးပြုပါ။ မှတ်တမ်းတင်ထားသော callback သည် proxy URL နှင့် CONNECT ပစ်မှတ်ကို လက်ခံသည်။ ဤ callback သည် nil မဟုတ်ပါက တည်ငြိမ်သော ProxyConnectHeader အကွက်ကို လျစ်လျူရှုသည်။
တန်ဖိုးများကို ရည်ရွယ်ထားသော နယ်ပယ်အတွင်း ထားပါ။ proxy အတွက်သာ ဖြစ်သော အကောင့်အမှတ်အသားသည် proxy ဖလှယ်မှုနှင့် သက်ဆိုင်သည်; ဝဘ်ဆိုက် ခွင့်ပြုချက် တန်ဖိုးသည် ဦးတည်ရာ တောင်းဆိုချက်နှင့် သက်ဆိုင်သည်။ callback သည် လိုအပ်သော handshake တန်ဖိုးကို မထုတ်ပေးနိုင်ပါက တိတ်ဆိတ်စွာ ကွဲပြားစွာ ဖွဲ့စည်းထားသော တောင်းဆိုချက်ကို ပို့မည့်အစား ၎င်း၏ အမှားကို ပြန်ပေးပါ။
ဤဆက်တင်များသည် CONNECT ကိုင်တွယ်မှုကို စိတ်ကြိုက်ပြင်ဆင်သည်။ ၎င်းတို့သည် ကိုယ်ပိုင် စစ်မှန်ကြောင်း အတည်ပြုသည့် ပရိုတိုကောကို တီထွင်ခြင်း မဟုတ်ဘဲ proxy ဝန်ဆောင်မှု၏ ဝင်ရောက်ခွင့် မူဝါဒကို မပြောင်းလဲပါ။