Registrer én Chrome MV3-proxygodkendelseslytter til profilskift
Registrer Manifest V3-godkendelseslytteren synkront, og læs den aktuelle proxykonto inde i hændelsens callback.
Skift af proxyprofiler bør ændre den valgte konto, ikke tilføje endnu en onAuthRequired-lytter. Ellers kan gamle closures blive ved med at svare med kontoen fra et tidligere valg.
Registrer én navngivet lytter på service workerens øverste niveau. Læs den aktuelle konto, når en hændelse ankommer:
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 uddrag forudsætter, at udvidelsen allerede gemmer den valgte HTTP-proxy under selectedProxy, med en numerisk port og den tilsigtede konto. Manifestet kræver webRequest, webRequestAuthProvider, storage og de nødvendige værtsrettigheder. Selve proxyvalget kræver også proxy-tilladelsen.
Registreringen sker synkront. Lageret læses inde i callbacket, efter at Chrome har en installeret lytter at sende til. At registrere først efter, at et indledende storage-promise er opfyldt, skaber et hul ved opvågning.
Tilføj en afvisningsgrænse før udgivelse
Uddraget viser registrering og kontovalg. Tilføj en begrænset genforsøgsregistrering pr. anmodning, så en afvist adgangskode ikke sendes i det uendelige. Ryd den registrering ved fuldførelse eller fejl. Worker-globals kan forsvinde, når workeren stopper, så opbevar tilstand, der er nødvendig mellem opvågninger, i et passende lagerområde i udvidelsen.
storage.session overlever worker-genstarter inden for browsersessionen; det er ikke permanent kontolager på tværs af browser-genstarter. Definer, hvad udvidelsen gør, når der ikke er en valgt konto tilgængelig.
isProxy- og challenger-kontrollerne forhindrer, at en udfordring fra et uvedkommende websted modtager denne konto. Hvis browseren aldrig sender hændelsen, kan oprydning af lytteren alene ikke frembringe den: undersøg den faktiske anmodning, tilladelser og browseradfærd hver for sig.