Semakan proksi dalam sambungan Chrome memerlukan destinasi dengan respons yang boleh dijangka. Gunakan titik akhir HTTPS yang anda kawal, seperti yang memulangkan objek JSON kecil yang mengandungi alamat yang diperhatikannya.

Jalankan permintaan daripada konteks sambungan, seperti service worker atau halaman sambungan, dengan titik akhir dalam host permissions manifes:

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

Kebenaran hos tidak memberikan content script keistimewaan merentas asal yang sama. Kekalkan semakan dalam konteks sambungan dan jangan andaikan skrip yang disuntik boleh membuat permintaan yang sama.

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);
  }
}

Nama hos ialah pemegang tempat. Pelayan dan klien mesti bersetuju tentang format respons dan dasar cache. Kendalikan permintaan yang ditolak dan respons cacat dalam pemanggil sambungan dan jangan paparkannya sebagai alamat keluar yang sah.

Namakan pemerhatian dengan tepat

Hasil yang berjaya membuktikan bahawa permintaan ini sampai ke titik akhir dan menerima bentuk jawapan yang dijangka. Bandingkan alamat yang diperhatikan dengan laluan yang anda maksudkan, di mana perbandingan itu bermakna. IP mendengar proksi yang dikonfigurasikan tidak semestinya menjadi jalan keluar awamnya.

Peraturan PAC atau senarai pintasan boleh menghantar semakan itu terus sementara destinasi lain menggunakan proksi. Membaca tetapan proksi memberikan bukti konfigurasi; permintaan memberikan bukti untuk destinasi ini. Kedua-duanya tidak membuktikan secara bersendirian bahawa setiap tab atau URL mengikut laluan yang sama.

Asingkan masa tamat, ralat HTTP dan badan tidak dijangka dalam antara muka. “Semakan ini gagal” lebih berguna daripada mengisytiharkan seluruh mesin di luar talian selepas satu permintaan.

Artikel berkaitan