ລົງທະບຽນຕົວຮັບຟັງການພິສູດຕົວຕົນ proxy Chrome MV3 ໜຶ່ງອັນສຳລັບການສະຫຼັບໂປຣໄຟລ໌
ລົງທະບຽນຕົວຮັບຟັງການພິສູດຕົວຕົນ Manifest V3 ແບບຊິງໂຄຣນັສ ແລະ ອ່ານບັນຊີ proxy ປັດຈຸບັນພາຍໃນການເອີ້ນກັບຂອງເຫດການ.
ການສະຫຼັບໂປຣໄຟລ໌ proxy ຄວນປ່ຽນບັນຊີທີ່ເລືອກ ບໍ່ແມ່ນເພີ່ມຕົວຮັບຟັງ onAuthRequired ອີກອັນໜຶ່ງ. ຖ້າບໍ່ດັ່ງນັ້ນ closures ເກົ່າອາດສືບຕໍ່ຕອບດ້ວຍບັນຊີຈາກການເລືອກກ່ອນໜ້າ.
ລົງທະບຽນຕົວຮັບຟັງທີ່ມີຊື່ໜຶ່ງອັນຢູ່ລະດັບເທິງຂອງ service worker. ອ່ານບັນຊີປັດຈຸບັນເມື່ອເຫດການມາຮອດ:
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'],
);ສ່ວນນີ້ສົມມຸດວ່າສ່ວນຂະຫຍາຍເກັບ proxy HTTP ທີ່ເລືອກໄວ້ແລ້ວພາຍໃຕ້ selectedProxy ດ້ວຍພອດເປັນຕົວເລກ ແລະ ບັນຊີທີ່ຕັ້ງໃຈໄວ້. Manifest ຕ້ອງການ webRequest, webRequestAuthProvider, storage ແລະ ການອະນຸຍາດໂຮສທີ່ຈຳເປັນ. ການເລືອກ proxy ເອງກໍຕ້ອງການການອະນຸຍາດ proxy.
ການລົງທະບຽນເກີດຂຶ້ນແບບຊິງໂຄຣນັສ. ບ່ອນເກັບຖືກອ່ານພາຍໃນການເອີ້ນກັບ ຫຼັງຈາກ Chrome ມີຕົວຮັບຟັງທີ່ຕິດຕັ້ງແລ້ວເພື່ອສົ່ງໄປ. ການລົງທະບຽນພຽງແຕ່ຫຼັງຈາກ promise ຂອງບ່ອນເກັບເບື້ອງຕົ້ນແກ້ໄຂແລ້ວສ້າງຊ່ອງຫວ່າງການຕື່ນ.
ເພີ່ມຂີດຈຳກັດການປະຕິເສດກ່ອນປ່ອຍ
ສ່ວນນີ້ສະແດງການລົງທະບຽນ ແລະ ການເລືອກບັນຊີ. ເພີ່ມບັນທຶກການລອງໃໝ່ທີ່ມີຂີດຈຳກັດສຳລັບແຕ່ລະຄຳຮ້ອງ ເພື່ອບໍ່ໃຫ້ລະຫັດຜ່ານທີ່ຖືກປະຕິເສດຖືກສົ່ງຢ່າງບໍ່ມີທີ່ສິ້ນສຸດ. ລຶບບັນທຶກນັ້ນເມື່ອສຳເລັດ ຫຼື ລົ້ມເຫຼວ. Globals ຂອງ worker ອາດຫາຍໄປເມື່ອ worker ຢຸດ ດັ່ງນັ້ນເກັບສະຖານະທີ່ຕ້ອງການລະຫວ່າງການຕື່ນໄວ້ໃນພື້ນທີ່ເກັບຂອງສ່ວນຂະຫຍາຍທີ່ເໝາະສົມ.
storage.session ຢູ່ລອດການເລີ່ມ worker ໃໝ່ພາຍໃນເຊສຊັນຂອງບຣາວເຊີ; ມັນບໍ່ແມ່ນບ່ອນເກັບບັນຊີຖາວອນລະຫວ່າງການເລີ່ມບຣາວເຊີໃໝ່. ກຳນົດວ່າສ່ວນຂະຫຍາຍເຮັດຫຍັງເມື່ອບໍ່ມີບັນຊີທີ່ເລືອກ.
ການກວດສອບ isProxy ແລະ challenger ປ້ອງກັນບໍ່ໃຫ້ສິ່ງທ້າທາຍຈາກເວັບໄຊທີ່ບໍ່ກ່ຽວຂ້ອງໄດ້ຮັບບັນຊີນີ້. ຖ້າບຣາວເຊີບໍ່ເຄີຍສົ່ງເຫດການ ການລຶບຕົວຮັບຟັງພຽງຢ່າງດຽວບໍ່ສາມາດສ້າງມັນໄດ້: ກວດສອບຄຳຮ້ອງຕົວຈິງ ການອະນຸຍາດ ແລະ ພຶດຕິກຳຂອງບຣາວເຊີແຍກຕ່າງຫາກ.