Прокси профилдерин алмаштыруу тандалган эсепти өзгөртүшү керек, дагы бир 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'],
);

Бул фрагмент кеңейтүү тандалган HTTP проксини selectedProxy астында, сандык порт жана көздөлгөн эсеп менен сактайт деп болжолдойт. Манифестке webRequest, webRequestAuthProvider, storage жана талап кылынган хост уруксаттары керек. Прокси тандоонун өзүнө да proxy уруксаты керек.

Каттоо синхрондуу жүрөт. Сактоо орду кайтарым чакыруунун ичинде, Chromeдо жөнөтүү үчүн орнотулган угуучу болгондон кийин окулат. Баштапкы storage promise чечилгенден кийин гана каттоо ойгонуу боштугун жаратат.

Чыгаруудан мурун баш тартуу чегин кошуңуз

Фрагмент каттоону жана эсеп тандоону көрсөтөт. Четке кагылган сырсөздүн чексиз жиберилишинен сактоо үчүн ар бир сурам үчүн чектелген кайталоо жазуусун кошуңуз. Аяктаганда же ийгиликсиздикте ошол жазууну тазалаңыз. Жумушчу токтогондо worker глобалдары жоголушу мүмкүн, ошондуктан ойгонуулардын ортосунда керектүү абалды кеңейтүүнүн ылайыктуу сактоо аймагында кармаңыз.

storage.session браузер сессиясынын ичинде жумушчунун кайра жүргүзүлүшүнөн аман калат; бул браузер кайра жүргүзүлүштөрүнүн ортосунда туруктуу эсеп сактоосу эмес. Тандалган эсеп жеткиликсиз болгондо кеңейтүү эмне кыларын аныктаңыз.

isProxy жана challenger текшерүүлөрү байланышсыз веб-сайттын чакырыгына бул эсепти алууга жол бербейт. Эгер браузер окуяны эч качан жибербесе, угуучуну тазалоо гана аны жарата албайт: чыныгы сурамды, уруксаттарды жана браузердин жүрүм-турумун өз-өзүнчө текшериңиз.

Тектеш макалалар