Preklapljanje proxy profilov bi moralo zamenjati izbrani račun, ne dodati še enega poslušalca onAuthRequired. Sicer lahko stare closures še naprej odgovarjajo z računom iz prejšnje izbire.

Registrirajte en imenovani poslušalec na najvišji ravni service workerja. Ob prihodu dogodka preberite trenutni račun:

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'],
);

Ta odlomek predpostavlja, da razširitev že shranjuje izbrani HTTP proxy pod selectedProxy, s številčnimi vrati in predvidenim računom. Manifest potrebuje webRequest, webRequestAuthProvider, storage in zahtevana dovoljenja gostitelja. Tudi sama izbira proxyja potrebuje dovoljenje proxy.

Registracija poteka sinhrono. Shramba se prebere v povratnem klicu, potem ko ima Chrome nameščen poslušalec, ki mu lahko dostavlja. Registracija šele po razrešitvi začetne storage obljube ustvari vrzel pri prebujanju.

Pred izdajo dodajte omejitev zavrnitev

Odlomek prikazuje registracijo in izbiro računa. Dodajte omejen zapis ponovnih poskusov za vsako zahtevo, da se zavrnjeno geslo ne pošilja v nedogled. Ta zapis počistite ob zaključku ali napaki. Globalne spremenljivke workerja lahko izginejo, ko se worker ustavi, zato stanje, potrebno med prebujanji, hranite v ustreznem območju shrambe razširitve.

storage.session preživi ponovne zagone workerja znotraj seje brskalnika; ni trajna shramba računa med ponovnimi zagonskimi brskalnika. Določite, kaj razširitev naredi, ko izbrani račun ni na voljo.

Preverjanja isProxy in challenger preprečijo, da bi izziv nepovezanega spletnega mesta prejel ta račun. Če brskalnik dogodka nikoli ne dostavi, samo čiščenje poslušalca tega ne more ustvariti: ločeno preglejte dejansko zahtevo, dovoljenja in vedenje brskalnika.

Sorodni članki