Preizkus proxyja v razširitvi Chrome potrebuje cilj s predvidljivim odgovorom. Uporabite končno točko HTTPS, ki jo nadzorujete, na primer tako, ki vrne majhen objekt JSON z naslovom, ki ga vidi.

Zahtevo zaženite iz konteksta razširitve, na primer iz njenega service workerja ali strani razširitve, s končno točko v host permissions manifesta:

"host_permissions": ["https://probe.example/*"]

Dovoljenje gostitelja content scriptu ne daje enakih pravic med izvori. Preverjanje ohranite v kontekstu razširitve, namesto da predpostavljate, da lahko vstavljena skripta pošlje enako zahtevo.

async function probe() {
  const controller = new AbortController();
  const timer = setTimeout(() => controller.abort(), 5000);
  try {
    const response = await fetch('https://probe.example/ip', {
      cache: 'no-store',
      signal: controller.signal,
    });
    if (!response.ok) throw new Error(`HTTP ${response.status}`);
    const result = await response.json();
    if (typeof result.ip !== 'string') throw new Error('Bad probe body');
    return result.ip;
  } finally {
    clearTimeout(timer);
  }
}

Ime gostitelja je nadomestni znak. Strežnik in odjemalec se morata dogovoriti o obliki odgovora in politiki predpomnjenja. Zavrnjene zahteve in poškodovane odgovore obravnavajte v klicatelju razširitve, ne prikazujte jih kot veljavnega izhodnega naslova.

Opažanje poimenujte natančno

Uspešen rezultat dokazuje, da je ta zahteva dosegla končno točko in prejela pričakovano obliko odgovora. Primerjajte opaženi naslov z načrtovano potjo, kjer je ta primerjava smiselna. IP, na katerem posluša nastavljeni proxy, ni nujno njegov javni izhod.

Pravilo PAC ali seznam izjem lahko preverjanje pošlje neposredno, medtem ko drug cilj uporablja proxy. Branje nastavitev proxyja daje dokaz o konfiguraciji; zahteva daje dokaz za ta cilj. Nobeno samo po sebi ne dokazuje, da vsak zavihek ali URL sledi isti poti.

V vmesniku ločite časovno omejitev, napako HTTP in nepričakovano telo. „To preverjanje ni uspelo“ je bolj uporabno kot po eni zahtevi razglasiti celoten stroj za brez povezave.

Sorodni članki