Registrer én Chrome MV3-proxygodkjenningslytter for profilbytte
Registrer Manifest V3-godkjenningslytteren synkront, og les gjeldende proxykonto inne i hendelsens tilbakeringing.
Bytte av proxyprofiler bør endre den valgte kontoen, ikke legge til nok en onAuthRequired-lytter. Ellers kan gamle closures fortsette å svare med kontoen fra et tidligere valg.
Registrer én navngitt lytter på øverste nivå i service workeren. Les gjeldende konto når en hendelse kommer:
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 forutsetter at utvidelsen allerede lagrer den valgte HTTP-proxyen under selectedProxy, med en numerisk port og den tiltenkte kontoen. Manifestet trenger webRequest, webRequestAuthProvider, storage og de nødvendige vertstillatelsene. Selve proxyvalget trenger også proxy-tillatelsen.
Registreringen skjer synkront. Lageret leses inne i tilbakeringingen, etter at Chrome har en installert lytter å levere til. Å registrere først etter at et innledende storage-løfte er oppfylt skaper et oppvåkningsgap.
Legg til en avvisningsgrense før utgivelse
Utdraget viser registrering og kontovalg. Legg til en begrenset gjenforsøkspost per forespørsel, slik at et avvist passord ikke sendes i det uendelige. Rydd den posten ved fullføring eller feil. Worker-globaler kan forsvinne når workeren stopper, så oppbevar tilstanden som trengs mellom oppvåkninger, i et passende lagringsområde i utvidelsen.
storage.session overlever worker-omstarter innenfor nettleserøkten; det er ikke permanent kontolagring på tvers av nettleseromstarter. Definer hva utvidelsen gjør når ingen valgt konto er tilgjengelig.
isProxy- og challenger-kontrollene hindrer at en utfordring fra et urelatert nettsted mottar denne kontoen. Hvis nettleseren aldri leverer hendelsen, kan opprydding av lytteren alene ikke frembringe den: undersøk den faktiske forespørselen, tillatelsene og nettleseratferden hver for seg.