Valutare gli URL PAC restituiti da CFNetworkCopyProxiesForURL
Trasformate i risultati della configurazione automatica del proxy di CFNetwork in route specifiche per la destinazione senza confondere l'indirizzo PAC con l'endpoint del proxy.
L'applicazione chiede a CFNetwork come raggiungere un sito web e riceve un URL che termina con .pac. Inserire quel nome host nella connessione socket è la strada sbagliata: identifica uno script di configurazione.
CFNetworkCopyProxiesForURL restituisce un array ordinato di dizionari per l'URL di destinazione. Esaminate kCFProxyTypeKey prima di leggere i campi dell'endpoint. Un dizionario di tipo kCFProxyTypeAutoConfigurationURL fornisce kCFProxyAutoConfigurationURLKey, che richiede un altro passo di valutazione.
- Ottenete le impostazioni proxy correnti del sistema e richiedete le route verso l'URL di destinazione effettivo.
- Quando un risultato fa riferimento a un URL PAC, valutate quello script per la stessa destinazione.
- Leggete i tipi e gli endpoint dei candidati risultanti. Un proxy HTTP, un proxy SOCKS e una route diretta richiedono una gestione della connessione diversa.
- Conservate l'ordine dei candidati quando applicate il comportamento consentito di errore e fallback.
CFNetworkExecuteProxyAutoConfigurationURL scarica e valuta lo script in modo asincrono. Il suo valore di ritorno immediato è una sorgente run loop. Pianificate quella sorgente; il callback fornisce il risultato della valutazione o l'errore al termine del lavoro. Creare la sorgente e leggere subito una variabile di risultato vuota non attende nulla. Invalidare la sorgente se l'operazione deve essere annullata.
Mantenete l'URL di destinazione collegato alla ricerca. Uno script PAC può scegliere route diverse per due host, quindi memorizzare un solo proxy risolto come risposta per ogni destinazione successiva cambia la politica dello script. Allo stesso modo, un candidato diretto è una route esplicita, non un nome host proxy mancante.
Queste API sono utili quando un trasporto personalizzato deve interpretare le impostazioni di sistema. Non implementano il protocollo proxy successivo per quel trasporto e la ricerca non recupera password dal Keychain. Su macOS, abbinate separatamente la credenziale del proxy nel Keychain.