ការប្តូរប្រវត្តិរូបប្រូកស៊ីគួរតែប្តូរគណនីដែលបានជ្រើសរើស មិនមែនបន្ថែមអ្នកស្តាប់ 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'],
);

ផ្នែកនេះសន្មតថាកម្មវិធីបន្ថែមបានរក្សាទុកប្រូកស៊ី HTTP ដែលបានជ្រើសរើសរួចហើយក្រោម selectedProxy ជាមួយច្រកជាលេខ និងគណនីដែលបានបម្រុងទុក។ Manifest ត្រូវការ webRequest, webRequestAuthProvider, storage និងការអនុញ្ញាតម៉ាស៊ីនដែលត្រូវការ។ ការជ្រើសរើសប្រូកស៊ីខ្លួនឯងក៏ត្រូវការការអនុញ្ញាត proxy ដែរ។

ការចុះឈ្មោះកើតឡើងដោយសមកាលកម្ម។ ការផ្ទុកត្រូវបានអាននៅក្នុងការហៅត្រឡប់ បន្ទាប់ពី Chrome មានអ្នកស្តាប់ដំឡើងសម្រាប់ផ្ញើទៅ។ ការចុះឈ្មោះតែបន្ទាប់ពី promise ផ្ទុកដំបូងត្រូវបានដោះស្រាយបង្កើតគម្លាតនៃការភ្ញាក់។

បន្ថែមដែនកំណត់នៃការបដិសេធមុនពេលចេញផ្សាយ

ផ្នែកនេះបង្ហាញការចុះឈ្មោះ និងការជ្រើសរើសគណនី។ បន្ថែមកំណត់ត្រាព្យាយាមឡើងវិញមានដែនកំណត់សម្រាប់សំណើនីមួយៗ ដើម្បីកុំឱ្យពាក្យសម្ងាត់ដែលត្រូវបានបដិសេធត្រូវបានដាក់ស្នើគ្មានទីបញ្ចប់។ សម្អាតកំណត់ត្រានោះនៅពេលបញ្ចប់ ឬបរាជ័យ។ Globals របស់ worker អាចបាត់នៅពេល worker ឈប់ ដូច្នេះរក្សាស្ថានភាពដែលត្រូវការរវាងការភ្ញាក់នៅក្នុងតំបន់ផ្ទុកសមស្របរបស់កម្មវិធីបន្ថែម។

storage.session រស់រានពីការចាប់ផ្តើមឡើងវិញរបស់ worker ក្នុងវគ្គរុករក។ វាមិនមែនជាការផ្ទុកគណនីអចិន្ត្រៃយ៍រវាងការចាប់ផ្តើមឡើងវិញរបស់រុករកទេ។ កំណត់អ្វីដែលកម្មវិធីបន្ថែមធ្វើនៅពេលមិនមានគណនីដែលបានជ្រើសរើស។

ការត្រួតពិនិត្យ isProxy និង challenger ការពារការប្រកួតប្រជែងពីគេហទំព័រមិនពាក់ព័ន្ធពីការទទួលគណនីនេះ។ ប្រសិនបើរុករកមិនដែលផ្ញើព្រឹត្តិការណ៍ ការសម្អាតអ្នកស្តាប់តែម្នាក់ឯងមិនអាចបង្កើតវាបានទេ៖ ពិនិត្យសំណើពិតប្រាកដ ការអនុញ្ញាត និងឥរិយាបថរុករកដោយឡែកពីគ្នា។

អត្ថបទពាក់ព័ន្ធ