ප්‍රොක්සි පැතිකඩ මාරු කිරීම තෝරාගත් ගිණුම මාරු කළ යුතුය, තවත් onAuthRequired සවන්දෙන්නෙකු එකතු කිරීම නොවේ. එසේ නොවුනහොත් පැරණි closures පෙර තේරීමේ ගිණුම සමඟ පිළිතුරු දිගටම දිය හැකිය.

සේවා සේවකයාගේ ඉහළම මට්ටමේ එක් නම් කළ සවන්දෙන්නෙකු ලියාපදිංචි කරන්න. සිදුවීමක් පැමිණි විට වත්මන් ගිණුම කියවන්න:

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 සතුව යැවීමට ස්ථාපිත සවන්දෙන්නෙකු ඇති පසු ආපසු ඇමතුම තුළ ගබඩාව කියවනු ලැබේ. ආරම්භක storage promise එක විසඳීමෙන් පසුව පමණක් ලියාපදිංචි වීම අවදිවීමේ පරතරයක් ඇති කරයි.

නිකුත් කිරීමට පෙර ප්‍රතික්ෂේප සීමාවක් එකතු කරන්න

කොටස ලියාපදිංචිය සහ ගිණුම් තේරීම පෙන්වයි. ප්‍රතික්ෂේප වූ මුරපදයක් අසීමිතව ඉදිරිපත් නොවන පරිදි සෑම ඉල්ලීමකටම සීමිත නැවත උත්සාහ වාර්තාවක් එකතු කරන්න. සම්පූර්ණ වූ විට හෝ අසාර්ථක වූ විට එම වාර්තාව පිරිසිදු කරන්න. කම්කරු නතර වූ විට worker globals අතුරුදහන් විය හැකිය, එබැවින් අවදිවීම් අතර අවශ්‍ය තත්ත්වය සුදුසු දිගුවේ ගබඩා ප්‍රදේශයක තබා ගන්න.

storage.session බ්‍රව්සර සැසිය තුළ කම්කරු නැවත ආරම්භ කිරීම්වලට ඔරොත්තු දේ; එය බ්‍රව්සර නැවත ආරම්භ කිරීම් අතර ස්ථිර ගිණුම් ගබඩාවක් නොවේ. තෝරාගත් ගිණුමක් නොමැති විට දිගුව කුමක් කරයිද යන්න නිර්වචනය කරන්න.

isProxy සහ challenger පරීක්ෂණ නොබැඳි වෙබ් අඩවි අභියෝගයකට මෙම ගිණුම ලැබීම වළක්වයි. බ්‍රව්සරය කිසිදා සිදුවීම යවන්නේ නැත්නම්, සවන්දෙන්නා පිරිසිදු කිරීම පමණක් එය නිපදවිය නොහැක: සැබෑ ඉල්ලීම, අවසර සහ බ්‍රව්සර හැසිරීම වෙන් වෙන්ව පරීක්ෂා කරන්න.

අදාළ ලිපි