איבערבייטן פּראָקסי פּראָפֿילן זאָל טוישן דעם אויסגעקליבענעם קאָנטאָ, נישט צולייגן נאָך אַן 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, מיט אַ נומערישן פּאָרט און דעם בדעה׳טן קאָנטאָ. דער מאַניפֿעסט דאַרף webRequest, webRequestAuthProvider, storage און די פֿאָדערלעכע האָסט דערלויבענישן. דער פּראָקסי אויסוואַל אַליין דאַרף אויך די proxy דערלויבעניש.

די רעגיסטראַציע געשעט סינכראָן. דער אָנזאָג ווערט געלייענט אין צוריקרוף, נאָך וואָס Chrome האָט אַן אינסטאַלירטן צוהערער צו שיקן צו. זיך רעגיסטרירן ערשט נאָך וואָס אַן אָנהייבלעכער storage צוזאָג ווערט געלייזט שאַפֿט אַ לאָך אין אויפֿוועקונג.

לייגט צו אַ באַגרענעצונג פֿאַר אָפּוואַרפֿונג פֿאַר דער אַרויסגעבונג

דער פֿראַגמענט ווײַזט רעגיסטראַציע און קאָנטאָ אויסוואַל. לייגט צו אַ באַגרענעצטן ווידערהערן־רעקאָרד פֿאַר יעדער בקשה, כּדי אַ אָפּגעוואָרפֿענע פּאַראָל זאָל נישט ווערן אָפּגעשיקט אָן סוף. פּאַצט אויס דעם רעקאָרד בײַם פֿאַרענדיקן אָדער דורכפֿאַל. Worker גלאָבאַלן קענען פֿאַרשווינדן ווען דער worker שטעלט זיך אָפּ, דערפֿאַר האַלט דעם צושטאַנד וואָס מען דאַרף צווישן אויפֿוועקונגען אין אַ פּאַסיקן storage געגנט פֿון דער פֿאַרברייטערונג.

storage.session איבערלעבט worker איבערזעצונגען אין דער בראַוזער סעסיע; עס איז נישט קיין שטענדיקער קאָנטאָ־אָנזאָג צווישן בראַוזער איבערזעצונגען. דעפֿינירט וואָס די פֿאַרברייטערונג טוט ווען קיין אויסגעקליבענער קאָנטאָ איז נישט פֿאַראַן.

די isProxy און challenger פּריפֿונגען פֿאַרמיידן אַז אַ פֿאָדערונג פֿון אַ נישט־פֿאַרבונדענע וועבזײַטל זאָל באַקומען דעם קאָנטאָ. אויב דער בראַוזער שיקט קיין מאָל נישט די פּאַסירונג, קען דאָס אויסרייניקן פֿונעם צוהערער אַליין עס נישט שאַפֿן: פּריפֿט באַזונדער די פֿאַקטישע בקשה, די דערלויבענישן און דאָס בראַוזער פֿאַרהאַלטן.

פֿאַרבונדענע אַרטיקלען