Daftarkan Satu Pendengar Pengesahan Proksi Chrome MV3 untuk Penukaran Profil
Daftarkan pendengar pengesahan Manifest V3 secara segerak dan baca akaun proksi semasa di dalam panggilan balik peristiwa.
Menukar profil proksi sepatutnya menukar akaun yang dipilih, bukan menambah pendengar onAuthRequired yang lain. Jika tidak, closures lama boleh terus menjawab dengan akaun daripada pilihan sebelumnya.
Daftarkan satu pendengar bernama pada tahap teratas service worker. Baca akaun semasa apabila peristiwa tiba:
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'],
);Coretan ini menganggap sambungan sudah menyimpan proksi HTTP yang dipilih di bawah selectedProxy, dengan port berangka dan akaun yang dimaksudkan. Manifes memerlukan webRequest, webRequestAuthProvider, storage dan kebenaran hos yang diperlukan. Pemilihan proksi itu sendiri juga memerlukan kebenaran proxy.
Pendaftaran berlaku secara segerak. Storan dibaca di dalam panggilan balik, selepas Chrome mempunyai pendengar terpasang untuk dihantar. Mendaftar hanya selepas promise storan awal diselesaikan mencipta jurang bangun.
Tambahkan had penolakan sebelum dikeluarkan
Coretan menunjukkan pendaftaran dan pemilihan akaun. Tambahkan rekod cubaan semula terhad untuk setiap permintaan supaya kata laluan yang ditolak tidak dihantar tanpa henti. Bersihkan rekod itu apabila selesai atau gagal. Global pekerja boleh hilang apabila pekerja berhenti, jadi simpan keadaan yang diperlukan antara bangun dalam kawasan storan sambungan yang sesuai.
storage.session bertahan melalui permulaan semula pekerja dalam sesi pelayar; ia bukan storan akaun kekal antara permulaan semula pelayar. Takrifkan apa yang sambungan lakukan apabila tiada akaun dipilih tersedia.
Pemeriksaan isProxy dan challenger menghalang cabaran laman web yang tidak berkaitan daripada menerima akaun ini. Jika pelayar tidak pernah menghantar peristiwa itu, pembersihan pendengar sahaja tidak dapat menghasilkannya: periksa permintaan sebenar, kebenaran dan tingkah laku pelayar secara berasingan.