Om proxyprofiele te skakel behoort die gekose rekening te verander, nie nog 'n onAuthRequired-luisteraar by te voeg nie. Anders kan ou closures aanhou antwoord met die rekening van 'n vorige keuse.

Registreer een benoemde luisteraar op die dienswerker se boonste vlak. Lees die huidige rekening wanneer 'n gebeurtenis opdaag:

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

Hierdie fragment veronderstel dat die uitbreiding die gekose HTTP-proxy reeds onder selectedProxy stoor, met 'n numeriese poort en sy bedoelde rekening. Die manifest benodig webRequest, webRequestAuthProvider, storage en die vereiste gasheerregte. Die proxykeuse self benodig ook die proxy-reg.

Die registrasie geskied sinchronies. Berging word in die terugroep gelees, nadat Chrome 'n geïnstalleerde luisteraar het om na te stuur. Om eers te registreer nadat 'n aanvanklike bergingsbelofte oplos, skep 'n wakkerword-gaping.

Voeg 'n verwerpingslimiet by voor die vrylating

Die fragment wys registrasie en rekeningkeuse. Voeg 'n begrensde herprobeer-rekord vir elke versoek by sodat 'n verwerpte wagwoord nie onbepaald ingestuur word nie. Maak daardie rekord skoon by voltooiing of mislukking. Werker-globale kan verdwyn wanneer die werker stop, so hou toestand wat oor wakkerword-siklusse nodig is in 'n gepaste uitbreidingsbergingsarea.

storage.session oorleef werker-hervoorstellings binne die blaaier-sessie; dit is nie permanente rekeningberging oor blaaier-hervoorstellings nie. Definieer wat die uitbreiding doen wanneer geen gekose rekening beskikbaar is nie.

Die isProxy- en challenger-kontroles verhoed dat 'n onverwante webwerf-uitdaging hierdie rekening ontvang. As die blaaier die gebeurtenis nooit stuur nie, kan luisteraar-opruiming alleen dit nie produseer nie: ondersoek die werklike versoek, regte en blaaiergedrag afsonderlik.

Verwante artikels