ပရောက်စီ ပရိုဖိုင်များ ပြောင်းလဲခြင်းသည် ရွေးချယ်ထားသော အကောင့်ကို ပြောင်းသင့်သည်၊ အခြား onAuthRequired နားထောင်သူကို ထပ်ထည့်ခြင်း မဟုတ်ပါ။ သို့မဟုတ်ပါက closures ဟောင်းများသည် ယခင် ရွေးချယ်မှုမှ အကောင့်ဖြင့် ဆက်လက် ဖြေကြားနိုင်သည်။

service worker ၏ အမြင့်ဆုံးအဆင့်တွင် အမည်ရှိ နားထောင်သူ တစ်ခုကို မှတ်ပုံတင်ပါ။ ဖြစ်ရပ် ရောက်လာသောအခါ လက်ရှိ အကောင့်ကို ဖတ်ပါ။

function answerProxyChallenge(details, reply) {
  if (!details.isProxy) {
    reply({});
    return;
  }
  chrome.storage.session.get('selectedProxy').then(({selectedProxy: p}) => {
    if (!p || details.challenger.host !== p.host ||
        details.challenger.port !== p.port) {
      reply({});
      return;
    }
    reply({authCredentials: {username: p.username, password: p.password}});
  }).catch(() => reply({cancel: true}));
}

chrome.webRequest.onAuthRequired.addListener(
  answerProxyChallenge,
  {urls: ['<all_urls>']},
  ['asyncBlocking'],
);

ဤအပိုင်းသည် extension သည် ရွေးချယ်ထားသော HTTP ပရောက်စီကို selectedProxy အောက်တွင် ဂဏန်း port နှင့် ရည်ရွယ်ထားသော အကောင့်ဖြင့် သိမ်းဆည်းပြီးဖြစ်သည်ဟု ယူဆသည်။ Manifest တွင် webRequest၊ webRequestAuthProvider၊ storage နှင့် လိုအပ်သော host ခွင့်ပြုချက်များ လိုအပ်သည်။ ပရောက်စီ ရွေးချယ်မှုကိုယ်တိုင်လည်း proxy ခွင့်ပြုချက် လိုအပ်သည်။

မှတ်ပုံတင်ခြင်းသည် တစ်ပြိုင်နက် ဖြစ်ပေါ်သည်။ Chrome တွင် ပို့ရန် ထည့်သွင်းထားသော နားထောင်သူ ရှိပြီးနောက် သိုလှောင်မှုကို ပြန်ခေါ်မှုအတွင်း ဖတ်သည်။ ကနဦး storage promise ဖြေရှင်းပြီးမှသာ မှတ်ပုံတင်ခြင်းသည် နိုးထမှု ကွက်လပ် ဖြစ်ပေါ်စေသည်။

မထုတ်ဝေမီ ငြင်းပယ်မှု ကန့်သတ်ချက် ထည့်ပါ

အပိုင်းသည် မှတ်ပုံတင်ခြင်းနှင့် အကောင့် ရွေးချယ်မှုကို ပြသည်။ ငြင်းပယ်ခံရသော စကားဝှက်ကို အဆုံးမရှိ မတင်သွင်းရန် တောင်းဆိုမှုတစ်ခုစီအတွက် ကန့်သတ်ထားသော ပြန်လည်ကြိုးစားမှု မှတ်တမ်း ထည့်ပါ။ ပြီးဆုံးခြင်း သို့မဟုတ် မအောင်မြင်ခြင်းတွင် ထိုမှတ်တမ်းကို ရှင်းပါ။ worker ရပ်တန့်သောအခါ worker globals ပျောက်ကွယ်နိုင်သည်၊ ထို့ကြောင့် နိုးထမှုများကြား လိုအပ်သော အခြေအနေကို သင့်လျော်သော extension သိုလှောင်မှု ဧရိယာတွင် ထားပါ။

storage.session သည် browser session အတွင်း worker ပြန်လည်စတင်မှုများကို ခံနိုင်ရည်ရှိသည်၊ ၎င်းသည် browser ပြန်လည်စတင်မှုများကြား အမြဲတမ်း အကောင့် သိုလှောင်မှု မဟုတ်ပါ။ ရွေးချယ်ထားသော အကောင့် မရရှိနိုင်သောအခါ extension က ဘာလုပ်သည်ကို သတ်မှတ်ပါ။

isProxy နှင့် challenger စစ်ဆေးမှုများသည် မသက်ဆိုင်သော ဝဘ်ဆိုက် စိန်ခေါ်မှုကို ဤအကောင့် မရရှိစေရန် တားဆီးသည်။ browser သည် ဖြစ်ရပ်ကို ဘယ်တော့မှ မပို့ပါက နားထောင်သူ ရှင်းလင်းခြင်းတစ်ခုတည်းဖြင့် ၎င်းကို မဖန်တီးနိုင်ပါ၊ အမှန်တကယ် တောင်းဆိုမှု၊ ခွင့်ပြုချက်များနှင့် browser အပြုအမူကို သီးခြား စစ်ဆေးပါ။

ဆက်စပ်ဆောင်းပါးများ