Avaliar os URL PAC devoltos por CFNetworkCopyProxiesForURL
Converte os resultados da configuración automática de proxy de CFNetwork en rutas específicas por destino sen confundir o enderezo PAC co punto final do proxy.
A túa aplicación pregunta a CFNetwork como chegar a un sitio web e recibe un URL que remata en .pac. Poñer ese nome de host na conexión de socket é un camiño equivocado: identifica un script de configuración.
CFNetworkCopyProxiesForURL devolve unha matriz ordenada de dicionarios para o URL de destino. Inspecciona kCFProxyTypeKey antes de ler os campos do punto final. Un dicionario de tipo kCFProxyTypeAutoConfigurationURL fornece kCFProxyAutoConfigurationURLKey, que require outro paso de avaliación.
- Obtén a configuración actual de proxy do sistema e solicita rutas cara ao URL de destino real.
- Cando un resultado faga referencia a un URL PAC, avalia ese script para o mesmo destino.
- Le os tipos e puntos finais dos candidatos resultantes. Un proxy HTTP, un proxy SOCKS e unha ruta directa requiren un manexo de conexión distinto.
- Conserva a orde dos candidatos ao aplicar o comportamento permitido de fallo e reserva.
CFNetworkExecuteProxyAutoConfigurationURL descarga e avalia o script de forma asíncrona. O seu valor de retorno inmediato é unha fonte de run loop. Programa esa fonte; a chamada de retorno fornece o resultado da avaliación ou o erro despois de rematar o traballo. Crear a fonte e ler de inmediato unha variable de resultado baleira non espera nada. Invalida a fonte se a operación debe cancelarse.
Mantén o URL de destino ligado á consulta. Un script PAC pode escoller rutas distintas para dous hosts, así que gardar un único proxy resolto como resposta para cada destino posterior cambia a política do script. Do mesmo xeito, un candidato directo é unha ruta explícita, non un nome de host de proxy ausente.
Estas API son útiles cando un transporte personalizado debe interpretar a configuración do sistema. Non implementan o protocolo de proxy posterior para ese transporte, e a consulta non recupera contrasinais do Keychain. En macOS, fai coincidir a credencial do proxy no Keychain por separado.