Proksi profillarini almashtirish tanlangan hisobni almashtirishi kerak, yana bitta onAuthRequired tinglovchisini qoʻshish emas. Aks holda eski closures oldingi tanlovdagi hisob bilan javob berishda davom etishi mumkin.

Service worker eng yuqori darajasida bitta nomlangan tinglovchini roʻyxatdan oʻtkazing. Voqea kelganda joriy hisobni oʻqing:

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

Bu fragment kengaytma tanlangan HTTP proksini allaqachon selectedProxy ostida, raqamli port va moʻljallangan hisob bilan saqlaydi deb taxmin qiladi. Manifestga webRequest, webRequestAuthProvider, storage va kerakli host ruxsatlari kerak. Proksi tanlashning oʻziga ham proxy ruxsati kerak.

Roʻyxatdan oʻtkazish sinxron amalga oshadi. Xotira qayta chaqiruv ichida, Chrome yuborish uchun oʻrnatilgan tinglovchiga ega boʻlgandan keyin oʻqiladi. Faqat dastlabki storage vaʼdasi hal boʻlgandan keyin roʻyxatdan oʻtkazish uygʻonish boʻshligʻini yaratadi.

Chiqarishdan oldin rad etish chegarasini qoʻshing

Fragment roʻyxatdan oʻtkazish va hisob tanlashni koʻrsatadi. Rad etilgan parol cheksiz yuborilmasligi uchun har bir soʻrov uchun cheklangan qayta urinish yozuvini qoʻshing. Bu yozuvni tugaganda yoki muvaffaqiyatsizlikda tozalang. Worker toʻxtaganda worker globallari yoʻqolishi mumkin, shuning uchun uygʻonishlar orasida kerakli holatni kengaytmaning mos xotira hududida saqlang.

storage.session brauzer seansi ichida worker qayta ishga tushishlariga bardosh beradi; bu brauzer qayta ishga tushishlari orasida doimiy hisob xotirasi emas. Tanlangan hisob mavjud boʻlmaganda kengaytma nima qilishini belgilang.

isProxy va challenger tekshiruvlari aloqasiz veb-sayt chaqirigʻiga bu hisobni olishga yoʻl qoʻymaydi. Agar brauzer voqeani hech qachon yubormasa, faqat tinglovchini tozalash uni hosil qila olmaydi: haqiqiy soʻrov, ruxsatlar va brauzer xatti-harakatini alohida tekshiring.

O'xshash maqolalar