Reģistrējiet vienu Chrome MV3 starpniekservera autentifikācijas klausītāju profila maiņai
Reģistrējiet Manifest V3 autentifikācijas klausītāju sinhroni un nolasiet pašreizējo starpniekservera kontu notikuma atzvanīšanā.
Starpniekservera profilu maiņai jāmaina atlasītais konts, nevis jāpievieno vēl viens onAuthRequired klausītājs. Citādi vecie closures var turpināt atbildēt ar iepriekšējās izvēles kontu.
Reģistrējiet vienu nosauktu klausītāju servisa strādnieka augšējā līmenī. Kad pienāk notikums, nolasiet pašreizējo kontu:
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'],
);Šis fragments pieņem, ka paplašinājums jau glabā atlasīto HTTP starpniekserveri zem selectedProxy ar ciparu portu un paredzēto kontu. Manifestam vajag webRequest, webRequestAuthProvider, storage un nepieciešamās resursdatora atļaujas. Arī pašai starpniekservera izvēlei vajag proxy atļauju.
Reģistrācija notiek sinhroni. Krātuve tiek lasīta atzvanīšanas laikā pēc tam, kad Chrome ir instalēts klausītājs, kam piegādāt. Reģistrēšanās tikai pēc sākotnējā storage solījuma izpildes rada pamošanās plaisu.
Pirms izlaišanas pievienojiet noraidīšanas ierobežojumu
Fragments parāda reģistrāciju un konta izvēli. Pievienojiet ierobežotu atkārtošanas ierakstu katram pieprasījumam, lai noraidītu paroli nesūtītu bezgalīgi. Notīriet šo ierakstu pēc pabeigšanas vai neveiksmes. Worker globālie mainīgie var pazust, kad worker apstājas, tāpēc starp pamošanās reizēm nepieciešamo stāvokli glabājiet piemērotā paplašinājuma krātuves apgabalā.
storage.session pārdzīvo worker restartus pārlūka sesijas laikā; tas nav pastāvīga konta krātuve starp pārlūka restartiem. Definējiet, ko paplašinājums dara, ja nav pieejams atlasītais konts.
isProxy un challenger pārbaudes neļauj nesaistītas vietnes izaicinājumam saņemt šo kontu. Ja pārlūks nekad nepiegādā notikumu, tikai klausītāja tīrīšana to nevar radīt: pārbaudiet faktisko pieprasījumu, atļaujas un pārlūka uzvedību atsevišķi.