Byte av proxyprofilar bør endre den valde kontoen, ikkje leggje til endå ein onAuthRequired-lyttar. Elles kan gamle closures halde fram med å svare med kontoen frå eit tidlegare val.

Registrer éin namngjeven lyttar på øvste nivå i service workeren. Les gjeldande konto når ei hending kjem:

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

Dette utdraget føreset at utvidinga allereie lagrar den valde HTTP-proxyen under selectedProxy, med ein numerisk port og den tiltenkte kontoen. Manifestet treng webRequest, webRequestAuthProvider, storage og dei nødvendige vertsløyva. Sjølve proxyvalet treng også proxy-løyvet.

Registreringa skjer synkront. Lageret vert lese inne i tilbakeringinga, etter at Chrome har ein installert lyttar å levere til. Å registrere først etter at eit innleiande storage-løfte er oppfylt skapar eit oppvakningsgap.

Legg til ei avvisinggrense før utgiving

Utdraget viser registrering og kontoval. Legg til ein avgrensa gjenførspost per førespurnad, slik at eit avvist passord ikkje vert sendt i det uendelege. Rydd den posten ved fullføring eller feil. Worker-globalar kan forsvinne når workeren stoppar, så oppbevar tilstanden som trengst mellom oppvakningar, i eit høveleg lagringsområde i utvidinga.

storage.session overlever worker-omstartar innanfor nettlesarøkta; det er ikkje permanent kontolagring på tvers av nettlesaromstartar. Definer kva utvidinga gjer når ingen vald konto er tilgjengeleg.

isProxy- og challenger-kontrollane hindrar at ei utfordring frå ein urelatert nettstad mottek denne kontoen. Viss nettlesaren aldri leverer hendinga, kan opprydding av lyttaren åleine ikkje frambringe ho: undersøk den faktiske førespurnaden, løyva og nettlesaråtferda kvar for seg.

Relaterte artiklar