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.

  1. Obtén a configuración actual de proxy do sistema e solicita rutas cara ao URL de destino real.
  2. Cando un resultado faga referencia a un URL PAC, avalia ese script para o mesmo destino.
  3. 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.
  4. 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.

Artigos relacionados