(() => { /* chrome.storage.local.set({ credentials: { 'example.com': { username: 'foo', password: '***' } } }); */ chrome.storage.local.get(['credentials'], ({ credentials = {} }) => { const REQS = new Set(); setInterval(() => { REQS.clear(); }, 60000); let onAuthRequired = ({ challenger, requestId }) => { let hostKey = Object.keys(credentials).find(hostKey => { return ( challenger.host === hostKey || challenger.host.endsWith(`.${hostKey}`) ); }); if (!hostKey) { return; } if (REQS.has(requestId)) { return { cancel: true }; }; REQS.add(requestId); return { authCredentials: credentials[hostKey] }; }; chrome.webRequest.onAuthRequired.addListener(onAuthRequired, { urls: ['https://*/*'] }, ['blocking']); }); })();