Egyetlen Chrome MV3 proxy-hitelesítési figyelő regisztrálása profilváltáshoz
Regisztrálja szinkron módon a Manifest V3 hitelesítési figyelőt, és olvassa ki az aktuális proxyfiókot az esemény visszahívásában.
A proxyprofilok váltásának a kiválasztott fiókot kell átváltania, nem pedig újabb onAuthRequired figyelőt hozzáadnia. Különben a régi closures továbbra is a korábbi kiválasztás fiókjával válaszolhatnak.
Regisztráljon egyetlen elnevezett figyelőt a service worker legfelső szintjén. Olvassa ki az aktuális fiókot, amikor esemény érkezik:
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'],
);Ez a részlet feltételezi, hogy a kiterjesztés már a selectedProxy alatt tárolja a kiválasztott HTTP-proxyt, numerikus porttal és a szándékolt fiókkal. A manifestnek webRequest, webRequestAuthProvider, storage és a szükséges gazdagép-engedélyek kellenek. Magának a proxy kiválasztásának is kell a proxy engedély.
A regisztráció szinkron módon történik. A tároló az esemény visszahívásában olvasódik, miután a Chrome-nak van telepített figyelője, amelyhez továbbíthat. Ha csak egy kezdeti storage-promise feloldása után regisztrál, az ébresztési rést hoz létre.
Adjon hozzá elutasítási korlátot kiadás előtt
A részlet a regisztrációt és a fiókválasztást mutatja. Adjon hozzá korlátozott újrapróbálkozási rekordot minden kéréshez, hogy egy elutasított jelszó ne legyen végtelenül elküldve. A rekordot fejezze be vagy törölje hiba esetén. A worker globális változói eltűnhetnek, amikor a worker leáll, ezért az ébresztések között szükséges állapotot a kiterjesztés megfelelő tárolóterületén tartsa.
A storage.session túléli a worker újraindításait a böngésző munkamenetén belül; nem állandó fióktároló a böngésző újraindításai között. Határozza meg, mit tesz a kiterjesztés, ha nincs kiválasztott fiók.
Az isProxy és challenger ellenőrzések megakadályozzák, hogy egy nem kapcsolódó webhely kihívása megkapja ezt a fiókot. Ha a böngésző soha nem küldi el az eseményt, a figyelő tisztítása önmagában nem tudja előidézni: vizsgálja külön a tényleges kérést, az engedélyeket és a böngésző viselkedését.