Evalueer PAC-URL's wat deur CFNetworkCopyProxiesForURL teruggegee word
Skakel CFNetwork se outomatiese proxy-konfigurasie-uitslae om na bestemming-spesifieke roetes sonder om die PAC-adres vir die proxy-eindpunt aan te sien.
Jou toepassing vra CFNetwork hoe om 'n webwerf te bereik en kry 'n URL wat op .pac eindig. Om daardie hostnaam in die sokkelverbinding te plaas, is 'n verkeerde draai: dit identifiseer 'n konfigurasieskrip.
CFNetworkCopyProxiesForURL gee 'n geordende skikking van woordeboeke vir die teiken-URL terug. Ondersoek kCFProxyTypeKey voordat jy eindpuntvelde lees. 'n Woordeboek van die tipe kCFProxyTypeAutoConfigurationURL verskaf kCFProxyAutoConfigurationURLKey, wat nog 'n evalueringsstap vereis.
- Kry die huidige stelsel-proxy-instellings en vra vir roetes na die werklike bestemmings-URL.
- Wanneer 'n resultaat na 'n PAC-URL verwys, evalueer daardie skrip vir dieselfde bestemming.
- Lees die resulterende kandidaattipes en eindpunte. 'n HTTP-proxy, 'n SOCKS-proxy en 'n direkte roete vereis verskillende verbindingshantering.
- Behou die kandidaatorde wanneer jy die toegelate fout- en terugvalgedrag toepas.
CFNetworkExecuteProxyAutoConfigurationURL laai die skrip af en evalueer dit asinkroon. Die onmiddellike terugkeerwaarde is 'n looplusbron. Skeduleer daardie bron; die callback lewer die evalueringsresultaat of fout nadat die werk voltooi is. Om die bron te skep en dadelik 'n leë resultaatveranderlike te lees, wag op niks. Maak die bron ongeldig as die bewerking gekanselleer moet word.
Hou die teiken-URL aan die opsoek gekoppel. 'n PAC-skrip kan verskillende roetes vir twee hosts kies, so om een opgeloste proxy as die antwoord vir elke volgende bestemming te stoor, verander die skrip se beleid. Net so is 'n direkte kandidaat 'n eksplisiete roete, nie 'n ontbrekende proxy-hostnaam nie.
Hierdie API's is nuttig wanneer 'n pasgemaakte transport stelselinstellings moet interpreteer. Hulle implementeer nie die daaropvolgende proxyprotokol vir daardie transport nie, en die opsoek haal nie wagwoorde uit die Keychain nie. Op macOS, pas die proxy-referensie afsonderlik in die Keychain aan.