Perché il tuo file PAC sceglie l'adattatore di rete sbagliato
Un portatile può avere diversi indirizzi locali. Una regola PAC basata su myIpAddress() può identificare un'interfaccia diversa da quella prevista.
Il portatile è sul Wi-Fi dell'ufficio, il cavo Ethernet è collegato e un adattatore VPN è ancora presente. Il tuo file PAC chiede a myIpAddress() su quale rete si trova. Sembra ragionevole finché non riceve un indirizzo che appartiene all'adattatore sbagliato.
Il dettaglio mancante è che la funzione restituisce un solo indirizzo. Non è un inventario di tutte le interfacce e non contatta un sito web per scoprire il tuo IP pubblico. Un indirizzo privato, o anche un fallback di loopback, non ti dice quale indirizzo di uscita userà una richiesta tramite proxy.
Una sola risposta per una macchina con più indirizzi
La selezione dell'interfaccia di rete appartiene all'implementazione del PAC. Il vecchio consiglio di riordinare gli adattatori di Windows può descrivere una versione specifica di browser e sistema operativo, ma è una cattiva soluzione universale. Chromium documenta il proprio algoritmo di selezione e i limiti con più reti; un altro client non deve fare la stessa scelta.
Inizia identificando il valore che il browser interessato ha effettivamente fornito, poi confrontalo con i controlli di sottorete nel tuo script. Fallo separatamente su Wi-Fi, Ethernet e la connessione VPN approvata. Un indirizzo che sembra sorprendente può comunque soddisfare le regole dell'implementazione.
Fai dipendere la decisione da meno supposizioni
Dove possibile, scegli un proxy in base al nome host di destinazione anziché a un'interfaccia client presunta. Se è necessaria l'individuazione della rete, usa un segnale deliberato e documentato controllato dalla tua organizzazione. Anche l'individuazione basata sul DNS ha modalità di errore, quindi definisci cosa succede quando quel segnale non è disponibile.
Alcune implementazioni offrono myIpAddressEx(). Verifica il supporto e il formato di ritorno prima di adottarlo; non è un sostituto diretto di una singola stringa IPv4. Infine, verifica il percorso della richiesta risultante in modo indipendente. Riconoscere correttamente la sottorete dell'ufficio e raggiungere il proxy previsto sono due esiti distinti.